Spring的DAO框架没有抛出与特定技术相关的异常,例如SQLException或HibernateException,抛出的异常都是与特定技术无关的org.springframework.dao.DataAccessException类的子类,避免系统与某种特殊的持久层实现耦合在一起。DataAccessException是RuntimeException,是一个无须检测的异常,不要求代码去处理这类异常,遵循了Spring的一般理念:异常检测会使代码到处是不相关的catch或throws语句,使代码杂乱无章;并且NestedRuntimeException的子类,是可以通过NestedRuntimeException的getCause()方法获得导致该异常的另一个异常。Spring的异常分类有
Spring的DAO异常层次
异常
|
何时抛出
|
CleanupFailureDataAccessException |
一项操作成功地执行,但在释放数据库资源时发生异常(例如,关闭一个Connection) |
DataAccessResourceFailureException |
数据访问资源彻底失败,例如不能连接数据库 |
DataIntegrityViolationException |
Insert或Update数据时违反了完整性,例如违反了惟一性限制 |
DataRetrievalFailureException |
某些数据不能被检测到,例如不能通过关键字找到一条记录 |
DeadlockLoserDataAccessException |
当前的操作因为死锁而失败 |
IncorrectUpdateSemanticsDataAccessException |
Update时发生某些没有预料到的情况,例如更改超过预期的记录数。当这个异常被抛出时,执行着的事务不会被回滚 |
InvalidDataAccessApiusageException |
一个数据访问的JAVA API没有正确使用,例如必须在执行前编译好的查询编译失败了 |
invalidDataAccessResourceUsageException |
错误使用数据访问资源,例如用错误的SQL语法访问关系型数据库 |
OptimisticLockingFailureException |
乐观锁的失败。这将由ORM工具或用户的DAO实现抛出 |
TypemismatchDataAccessException |
Java类型和数据类型不匹配,例如试图把String类型插入到数据库的数值型字段中 |
UncategorizedDataAccessException |
有错误发生,但无法归类到某一更为具体的异常中 |
Spring的DAO异常层次是如此的细致缜密,服务对象能够精确地选择需要捕获哪些异常,捕获的异常对用户更有用的信息,哪些异常可以让她继续在调用堆栈中向上传递。
分享到:
相关推荐
- **异常处理**:Spring JDBC将底层的数据库异常转换为统一的Spring DataAccessException,简化了异常处理逻辑。 - **性能优化**:通过批处理和连接池,Spring JDBC能有效地提高数据库操作的性能。 在项目中使用...
对于错误处理,Spring的异常翻译功能将数据库的底层异常转换为更易理解的Spring DataAccessException子类,简化了异常处理逻辑。 在实际项目中,我们还可能结合Spring的AOP(面向切面编程)来实现日志记录、性能...
Spring JDBC将JDBC抛出的SQLException转换为更具体的Spring DataAccessException子类,简化了异常处理逻辑。 7. **批处理** 对于批量操作,JdbcTemplate提供了`batchUpdate(String[] sqls)`方法,可以一次执行多...
Spring JDBC将JDBC的异常转换为Spring的DataAccessException层次结构,使得异常处理更加统一,同时提供了更丰富的错误信息。 八、性能优化 Spring JDBC支持批处理,通过PreparedStatement的addBatch()方法,可以一...
JdbcTemplate自动处理JDBC级别的异常,并将其转换为更易理解的Spring DataAccessException子类,简化了错误处理逻辑。 总结来说,Spring的JdbcTemplate和NamedParameterJdbcTemplate提供了高效、简洁的JDBC操作...
6. **Exception Translation**: By translating MyBatis-specific exceptions to Spring's DataAccessException hierarchy, MyBatis-Spring ensures that your application's error handling remains consistent ...
Spring JDBC对JDBC抛出的异常进行了封装,转换为更有意义的Spring DataAccessException子类,使开发者更容易理解和处理数据库操作的错误。 10. **测试支持**: Spring 提供了`SqlUtils`和`TestUtils`等工具类,...
5. **Exception Translation**: Spring DAO模式还包含了异常转换机制,将底层的数据访问异常(如JDBC的SQLException)转换为更有意义的Spring DataAccessException子类,这样业务层可以不用关心具体的数据库错误,只...
7. **异常处理**: Spring JDBC将JDBC的异常转换为更有意义的Spring DataAccessException子类,使错误处理更加直观。 在学习`epet`项目时,你可以通过以下步骤深入了解Spring JDBC的使用: 1. 首先,查看`...
4. **异常处理**:讲解Spring JDBC如何将数据库抛出的原生异常转换为更友好的Spring DataAccessException层次结构,便于开发者理解和处理。 5. **事务管理**:讨论Spring JDBC如何配合Spring的事务管理,实现编程式...
它基于Spring DataAccessException异常处理机制,提供了更全面、更简洁的异常处理方式,避免了开发者在使用原生Java LDAP API时频繁遇到的异常处理难题。同时,Spring-LDAP还提供了动态构建LDAP过滤器和DNs...
4. **异常处理**:将数据库抛出的异常转换为统一的、易于理解和处理的Spring DataAccessException层次结构,简化错误处理。 5. **批处理操作**:对于大量数据的插入、更新或删除,提供批处理支持,提高性能。 6. *...
- 自动处理异常,如SQLException,将其转换为更易处理的Spring DataAccessException。 - 内置事务支持,可以轻松地与Spring的声明式事务管理集成。 6. **最佳实践**: - 使用占位符参数化SQL以防止SQL注入攻击。...
- **异常转换**:介绍Spring如何将Hibernate抛出的异常转换为统一的Spring DataAccessException。 9. **案例分析** - **用户管理系统**:以一个简单的用户管理系统为例,详细介绍如何使用Hibernate进行系统开发。...
MyBatis-Spring连接类。... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。
而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。 正如第二版那样,Spring ...
MyBatis-Spring 会帮助你... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。
此外,该类库支持将MyBatis数据映射器和SqlSession注入到业务层的bean中,处理事务,并将MyBatis的异常转换为Spring的DataAccessException异常。 在MyBatis-Spring的开发背景中,由于Spring 3.0仅仅支持iBatis2版本...
Spring JDBC将数据库特定的异常转换为Spring的DataAccessException层次结构,使得错误处理更加统一和规范。 8. **最佳实践** - 避免硬编码SQL,使用预编译的PreparedStatement来防止SQL注入。 - 使用...