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的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 MVC Controller单例陷阱
2014-09-12 10:01 970Spring MVC Controller默认是单例的: 单 ... -
Spring MVC模型(Model)层和视图(View)层
2014-04-20 18:57 0Spring MCV中Model层是View层的数据容器,Js ... -
springMVC 返回类型选择 以及 SpringMVC中model,modelMap.request,session取值顺序
2014-04-20 18:52 3115spring mvc处理方法支持如下的返回方式:ModelAn ... -
spring mvc常用注解@Component @Controller @Service @Repository
2014-03-13 16:10 9240注解用了之后,会在*.xml文件中大大减少配置量。以前我们每个 ... -
applicationContext.xml 配置文件在web.xml中的写法
2014-03-11 16:28 2827applicationContext.xml 配置文件的一些认 ... -
SpringMVC和Struts2的比较
2014-02-27 19:12 786通俗说Spring的作用 Spring ... -
Struts-config.xml配置文件《action-mappings》元素的详解
2014-02-26 13:12 2494action-mappings 该元素用于将Action元素定 ... -
使用Hibernate向mysql数据库中插入中文,数据库中显示??乱码
2014-02-24 23:02 1050[size=medium]通过网上学习,要求修改Hiberna ... -
在web.xml中通过contextConfigLocation配置spring
2014-02-24 21:19 2367在web.xml中通过contextConfigLocatio ... -
Struts-config.xml配置action-mappings元素略计
2014-02-24 16:58 675action-mappings 该元素用于将Action元素 ... -
Result Type(Struts.xml配置)
2013-06-25 08:35 659一个提交到服务器的处理通常可以分为两个阶段: 第一个阶段查询服 ... -
ibatis常用标记略记
2013-06-23 21:12 1021isNull判断property字段是否是null,用isEm ... -
ibatis的iterate使用
2013-06-23 20:38 1121ibatis的iterate使用 Iterate:这属性遍历 ... -
Struts2 两个Action之间动态传参
2013-06-21 10:00 1098两个Action 动态传参数 研究了近两天的时间 ... -
spring入门之—第一步
2013-06-13 15:26 758注: 本文用的是spring-framework-3.1.1. ... -
Spring的ApplicationContext加载多个配置文件的三种方式
2013-06-13 15:09 18751.第一种,使用数组方式 ApplicationConte ... -
详解iBaits中SqlMapClientTemplate的使用
2013-06-05 16:07 0pache iBatis(现已迁至Google Code下发展 ... -
Struts2.0默认支持多种格式的result type
2013-06-05 16:00 904<action name="attachmen ... -
maven+ssi对oracle实现增删改查(二)
2013-06-05 12:06 12421.index.jsp访问项目默认页面 <%@ page ... -
maven+ssi对oracle实现增删改查(一)
2013-06-05 11:40 1265-. 1.Oracle10g 的表结构语句,需要内容的自己添加 ...
相关推荐
Spring 的 DataAccessException Spring 的 DataAccessException 是一个异常层次结构,用于处理数据访问层中的错误。该异常层次结构是 Spring 框架中 DAO(Data Access Object)模块的一部分,其目的是为了提供一个...
- **异常处理**:Spring JDBC将底层的数据库异常转换为统一的Spring DataAccessException,简化了异常处理逻辑。 - **性能优化**:通过批处理和连接池,Spring JDBC能有效地提高数据库操作的性能。 在项目中使用...
MyBatis-Spring连接类。... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。
对于错误处理,Spring的异常翻译功能将数据库的底层异常转换为更易理解的Spring DataAccessException子类,简化了异常处理逻辑。 在实际项目中,我们还可能结合Spring的AOP(面向切面编程)来实现日志记录、性能...
而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。 正如第二版那样,Spring ...
MyBatis-Spring 会帮助你... 而且它也会处理事务, 翻译 MyBatis 的异常到 Spring 的 DataAccessException 异常(数据访问异常,译者注)中。最终,它并 不会依赖于 MyBatis,Spring 或 MyBatis-Spring 来构建应用程序代码。
异常处理方面,MyBatis-Spring整合会将MyBatis异常转换成Spring框架统一的数据访问异常DataAccessException,这样程序在抛出异常时更加友好,并且可以使用Spring提供的异常处理机制来处理这些异常。 MyBatis-Spring...
Spring JDBC将JDBC抛出的SQLException转换为更具体的Spring DataAccessException子类,简化了异常处理逻辑。 7. **批处理** 对于批量操作,JdbcTemplate提供了`batchUpdate(String[] sqls)`方法,可以一次执行多...
8. **异常处理**:Spring JDBC将JDBC的异常转换为Spring的`DataAccessException`层次结构,提供了一致的异常处理模型。 9. **批处理**:对于大量相似的操作,Spring JDBC还支持批处理,可以显著提高性能。 10. **...
其DataAccessException异常层次结构简化了错误处理。源码分析这些模块有助于理解Spring如何与各种持久化技术无缝对接。 Spring MVC是构建Web应用程序的强大工具,它将请求处理、视图渲染和业务逻辑解耦。...
Spring JDBC将JDBC的异常转换为Spring的DataAccessException层次结构,使得异常处理更加统一,同时提供了更丰富的错误信息。 八、性能优化 Spring JDBC支持批处理,通过PreparedStatement的addBatch()方法,可以一...
6. 异常处理:MyBatis-Spring 还将 MyBatis 的异常转换为 Spring 的 DataAccessException,使得开发者可以按照 Spring 的异常处理机制进行统一处理。 总的来说,MyBatis-Spring 1.0.1 版本为开发者提供了一个简洁、...
Spring JDBC将数据库特定的异常转换为Spring的DataAccessException层次结构,使得错误处理更加统一和规范。 8. **最佳实践** - 避免硬编码SQL,使用预编译的PreparedStatement来防止SQL注入。 - 使用...
JdbcTemplate自动处理JDBC级别的异常,并将其转换为更易理解的Spring DataAccessException子类,简化了错误处理逻辑。 总结来说,Spring的JdbcTemplate和NamedParameterJdbcTemplate提供了高效、简洁的JDBC操作...
Spring JDBC对JDBC的异常进行了封装,将数据库特定的异常转换为Spring的DataAccessException,使得开发者可以统一处理错误,而不必关心具体的数据库实现。 9. **JdbcDaoSupport和JdbcTemplteSupport** 这两个基类...
Spring-ORM将各种ORM框架抛出的异常转换为Spring的DataAccessException层次结构,提供了统一的异常处理机制。源码中可以查看这个转换过程,了解如何更好地处理数据访问错误。 10. **测试支持** Spring提供了一些...
7. ExceptionTranslator:转换数据库异常到Spring的DataAccessException,提供了统一的异常处理机制。 理解Spring-JDBC的源码,可以帮助我们更好地掌握其内部工作原理,解决实际开发中遇到的问题,提高代码质量。...
1、不同版本的SpringFramework有哪些主要功能? Spring Framework是一个开源的Java平台,它提供了全面的编程和配置模型,适用于企业级应用程序的开发。随着版本的更新,Spring引入了新特性和改进,例如对注解的更好...
- Mybatis-Spring 将Mybatis的异常转换为Spring的DataAccessException,使异常处理更加统一。 10. **多数据源支持**: - 如果项目需要连接多个数据库,Mybatis-Spring 提供了配置多数据源的能力,可以灵活切换...
Spring的DAO(Data Access Object)支持为基于Hibernate的持久层提供了通用的异常翻译,将Hibernate的异常转换为Spring的DataAccessException层次结构,使得应用程序可以统一处理数据访问异常。此外,Spring的...