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异常层次是如此的细致缜密,服务对象能够精确地选择需要捕获哪些异常,捕获的异常对用户更有用的信息,哪些异常可以让她继续在调用堆栈中向上传递。
PS: 如果用jpa需要用saveAndFlush而不是save即,一定要flush()否则dao层捕获不到异常
相关推荐
spring-dao-2.0.8.jar
spring源码缺失jar。spring-cglib-repack-3.2.5.jar,spring-objenesis-repack-2.6.jar
spring源码导入SpringObjenesis类报错解决,缺少jar包spring-cglib-repack-3.2.0.jar和spring-objenesis-repack-2.1.jar
spring-aop-4.1.6.RELEASE.jar spring-aspects-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-context-support-4.1.6.RELEASE.jar spring-core-4.1.6.RELEASE.jar ...
Spring-data-redis 1.7.6 & source源码
spring-context-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-beans-3.2.4.RELEASE.jar spring-test-3.2.4.RELEASE.jar spring-web-3.2.4.RELEASE.jar spring-aop-3.2.4.RELEASE.jar spring-webmvc-...
java jar包,亲测试可用 安全,可以对其进行数字签名,只让能够识别数字签名的用户使用里面的东西。 加快下载速度; 压缩,使文件变小,与ZIP压缩机制完全相同。 ...能够让JAR包里面的文件依赖于统一版本的类文件。...
spring-data-jdbc-repository, Spring Data JDBC泛型DAO实现 Spring Data JDBC泛型DAO实现查看正在积极开发和维护的 jirutka/spring-data-jdbc-repository fork 。 不再支持这里存储库。本项目的目的是为基于 ...
spring-2.0.8-sources.jar
spring data jpa的包。spring-data-commons-1.8.0.RELEASE.jar
2018-02-08从git_hub上拉取的Spring源码打成的jar,构建Spring-beans5.0以上源码所缺失的两个jar包spring-cglib-repack-3.2.6.jar,spring-objenesis-repack-2.6.jar
spring-context-support-4.0.0.M2.jar 需要用到的可以下载
spring-data-redis-1.6.2.RELEASE.jar,官网文档,免费提供,亲测可用
spring-framework-4.2.4.RELEASE-dist;官网不好下载了。这里分享下资源给大家,完整的spring开发jar包源码包,说明文档,全都有,最新版本不断更新中。
spring-osgi-1.2.0-rc1-with-dependencies.zip
spring-data-commons-1.7.2.RELEASEspring-data-jpa-1.5.2.RELEASE-java datajpa
spring-framework-2.0-with-dependencies.zip spring-framework-2.0-with-dependencies.zip spring-framework-2.0-with-dependencies.zip spring-framework-2.0-with-dependencies.zip spring-framework-2.0-with-...
spring-beans-3.1.xsd
spring-framework-4.2.3.RELEASE-dist;官网不好下载了。这里分享下资源给大家,完整的spring开发jar包源码包,说明文档,全都有,最新版本不断更新中。
spring-jdbc-dao马马忽忽