`

Spring的DataAccessException略记

阅读更多
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异常层次是如此的细致缜密,服务对象能够精确地选择需要捕获哪些异常,捕获的异常对用户更有用的信息,哪些异常可以让她继续在调用堆栈中向上传递。
DataAccessException,它是由Spring framework定义的运行时异常。关于DataAccessException,有两件事需要注意。首先,它是运行时异常,所以使用数据访问对象的应用程序代码不需要像在JDBC和EJB 2.x实体bean的情况下那样使用try-catch块包装每次调用。第二,DataAccessException是有用的,因为它包装底层持久化技术所使用的特定异常类,从而使应用程序的其他部分独立于持久化层。

Spring’s DAO frameworks do not throw technology-specific exceptions, such
as SQLException or HibernateException. Instead, all exceptions thrown are
subclasses of the technology-agnostic org.springframework.dao.DataAccess-
Exception. This enables your data access interfaces to throw Spring’s general
DataAccessException instead of implementation-specific exceptions that would
force other application layers to catch them and thus become coupled to a particular
persistence implementation. In fact, you can intermingle multiple persistence
technologies within the same application without your service objects even
knowing it.
Since DataAccessException is the root of all Spring DAO exceptions, there are
a couple of important things to know.
分享到:
评论

相关推荐

    Spring的DataAccessException

    Spring 的 DataAccessException Spring 的 DataAccessException 是一个异常层次结构,用于处理数据访问层中的错误。该异常层次结构是 Spring 框架中 DAO(Data Access Object)模块的一部分,其目的是为了提供一个...

    spring-jdbc jar包.rar

    - **异常处理**:Spring JDBC将底层的数据库异常转换为统一的Spring DataAccessException,简化了异常处理逻辑。 - **性能优化**:通过批处理和连接池,Spring JDBC能有效地提高数据库操作的性能。 在项目中使用...

    mybatis-spring-1.2.3

    MyBatis-Spring连接类。... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。

    spring+jdbc组合开发

    对于错误处理,Spring的异常翻译功能将数据库的底层异常转换为更易理解的Spring DataAccessException子类,简化了异常处理逻辑。 在实际项目中,我们还可能结合Spring的AOP(面向切面编程)来实现日志记录、性能...

    mybatis-spring-1.2.2.jar

    而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。 正如第二版那样,Spring ...

    mybatis-3.2.5.jar及mybatis-spring-1.2.2.jar

    MyBatis-Spring 会帮助你... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。

    mybatis-spring中文文档

    异常处理方面,MyBatis-Spring整合会将MyBatis异常转换成Spring框架统一的数据访问异常DataAccessException,这样程序在抛出异常时更加友好,并且可以使用Spring提供的异常处理机制来处理这些异常。 MyBatis-Spring...

    spring 整合JDBC 原创代码

    Spring JDBC将JDBC抛出的SQLException转换为更具体的Spring DataAccessException子类,简化了异常处理逻辑。 7. **批处理** 对于批量操作,JdbcTemplate提供了`batchUpdate(String[] sqls)`方法,可以一次执行多...

    springjdbc.zip_SpringJDBC_spring jdbc_spring 增删改查_springjdbc xml

    8. **异常处理**:Spring JDBC将JDBC的异常转换为Spring的`DataAccessException`层次结构,提供了一致的异常处理模型。 9. **批处理**:对于大量相似的操作,Spring JDBC还支持批处理,可以显著提高性能。 10. **...

    Spring高级源码学习笔记.zip

    其DataAccessException异常层次结构简化了错误处理。源码分析这些模块有助于理解Spring如何与各种持久化技术无缝对接。 Spring MVC是构建Web应用程序的强大工具,它将请求处理、视图渲染和业务逻辑解耦。...

    spring-jdbc-2.5.6.jar

    Spring JDBC将JDBC的异常转换为Spring的DataAccessException层次结构,使得异常处理更加统一,同时提供了更丰富的错误信息。 八、性能优化 Spring JDBC支持批处理,通过PreparedStatement的addBatch()方法,可以一...

    mybatis-spring-1.0.1-bundle.zip

    6. 异常处理:MyBatis-Spring 还将 MyBatis 的异常转换为 Spring 的 DataAccessException,使得开发者可以按照 Spring 的异常处理机制进行统一处理。 总的来说,MyBatis-Spring 1.0.1 版本为开发者提供了一个简洁、...

    SpringJDBC.rar_SpringJDBC_jdbctemplate_jdbctemplate spring

    Spring JDBC将数据库特定的异常转换为Spring的DataAccessException层次结构,使得错误处理更加统一和规范。 8. **最佳实践** - 避免硬编码SQL,使用预编译的PreparedStatement来防止SQL注入。 - 使用...

    Spring对JDBC的支持

    JdbcTemplate自动处理JDBC级别的异常,并将其转换为更易理解的Spring DataAccessException子类,简化了错误处理逻辑。 总结来说,Spring的JdbcTemplate和NamedParameterJdbcTemplate提供了高效、简洁的JDBC操作...

    spring.jdbc-3.0.5.jar

    Spring JDBC对JDBC的异常进行了封装,将数据库特定的异常转换为Spring的DataAccessException,使得开发者可以统一处理错误,而不必关心具体的数据库实现。 9. **JdbcDaoSupport和JdbcTemplteSupport** 这两个基类...

    spring-orm源码

    Spring-ORM将各种ORM框架抛出的异常转换为Spring的DataAccessException层次结构,提供了统一的异常处理机制。源码中可以查看这个转换过程,了解如何更好地处理数据访问错误。 10. **测试支持** Spring提供了一些...

    spring-jdbc源码

    7. ExceptionTranslator:转换数据库异常到Spring的DataAccessException,提供了统一的异常处理机制。 理解Spring-JDBC的源码,可以帮助我们更好地掌握其内部工作原理,解决实际开发中遇到的问题,提高代码质量。...

    Spring系列面试题129道(附答案解析)

    1、不同版本的SpringFramework有哪些主要功能? Spring Framework是一个开源的Java平台,它提供了全面的编程和配置模型,适用于企业级应用程序的开发。随着版本的更新,Spring引入了新特性和改进,例如对注解的更好...

    Mybatis-Spring 1.3.2 API中文版

    - Mybatis-Spring 将Mybatis的异常转换为Spring的DataAccessException,使异常处理更加统一。 10. **多数据源支持**: - 如果项目需要连接多个数据库,Mybatis-Spring 提供了配置多数据源的能力,可以灵活切换...

    spring2.5 hibernate api

    Spring的DAO(Data Access Object)支持为基于Hibernate的持久层提供了通用的异常翻译,将Hibernate的异常转换为Spring的DataAccessException层次结构,使得应用程序可以统一处理数据访问异常。此外,Spring的...

Global site tag (gtag.js) - Google Analytics