我们讨论过了事务界定和日志,现在对于如何在数据访问对象上应用它们有了更深入的理解。我们的第三个和最后一个讨论议题是异常处理。遵从几个简单的异常处理指导可以使您的 DAO 更容易使用、更健壮及更易于维护。
在实现 DAO 模式时,考虑以下问题:
DAO 的公共接口中的方法是否抛出检查过的异常?
如果是的话,抛出何种检查过的异常?
在 DAO 实现类中如何处理异常?
在使用 DAO 模式的过程中,我们的小组开发了一些处理异常的原则。遵从这些原则可以极大地改进您的 DAO:
DAO 方法应该抛出有意义的异常。
DAO 方法不应该抛出 java.lang.Exception 。 java.lang.Exception 太一般化了。它不传递关于底层问题的任何信息。
DAO 方法不应该抛出 java.sql.SQLException 。SQLException 是一个低级别的 JDBC 异常。一个 DAO 应该力争封装 JDBC 而不是将 JDBC 公开给应用程序的其余部分。
只有在可以合理地预期调用者可以处理异常时,DAO 接口中的方法才应该抛出检查过的异常。如果调用者不能以有意义的方式处理这个异常,那么考虑抛出一个未检查的(运行时)异常。
如果数据访问代码捕获了一个异常,不要忽略它。忽略捕获的异常的 DAO 是很难进行故障诊断的。
使用链接的异常将低级别的异常转化为高级别的异常。
考虑定义标准 DAO 异常类。Spring Framework (参阅 参考资料)提供了很好的一套预定义的 DAO 异常类。
----引用IBM文档
分享到:
相关推荐
J2EE项目中统一异常处理,14类异常的自定义分析,支持dao层异常原因的返回
数据访问对象,事务界定。在本文中,Java 开发人员 Sean C. Sullivan 讨论了 DAO 编程中三个常常被忽略的方面:事务界定、异常处理和日志记录。
Spring Boot 提供了统一的异常处理机制,通过使用 @ControllerAdvice 和 @ExceptionHandler 注解,可以实现对控制器层、Service 层、Dao 层以及 Spring 系统内定义的部分异常的统一处理。 在 Spring Boot 中,可以...
NULL 博文链接:https://royzhou1985.iteye.com/blog/341849
struts2的异常处理,解决异步请求时,异常以json格式发送到客户端。以及dao单元测试的配置。
通过定义继承RuntimeException的异常类及继承ExceptionHandler的异常处理类,手动从dao层捕获异常。非常实用!
出来工作一年时间了,我也大概对异常处理有了一些了解,在这呢小弟简单介绍下个人对异常处理的见解,抛砖引玉,希望各位大神提出宝贵的意见和建议。 拿spring+struts2+hibernate项目说明:通常一个页面请求到...
前言:个人觉得,学习或温习一套Web框架,在快速阅读一遍文档后,应从路由,控制器,请求/响应对象,数据模型(Logic,Dao,Entity),全局异常处理几个方面下手,这几项了解后,框架上手就游刃有余了。然后我比较...
自己写的一个java示例 该示例用jdbc与java事务来实现...该示例包含了一个方便调用的数据库访问工具类,该工具类实现了调用SQL语句,调用PreparedStatement对象,并对可能产生的异常进行了处理,保证了各DAO子类调用的简便性
Sullivan从三个方面讨论DAO编程的结构特征:事务划分,异常处理,日志记录.在最近的18个月,我和一个优秀的软件开发团队一起工作,开发定制基于WEB的供应链管理应用程序.我们的应用程序访问广泛的持久层数据,包括出货...
自己写的一个java示例 该示例用jdbc与java事务来实现...该示例包含了一个方便调用的数据库访问工具类,该工具类实现了调用SQL语句,调用PreparedStatement对象,并对可能产生的异常进行了处理,保证了各DAO子类调用的简便性
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接...
对于系统中的异常处理是一个大问题,需要考虑几个问题,文后回答 代码中的异常什么时候该抛,什么时候该捕获 系统内部的异常应该在什么位置捕获,controller,service还是dao层 异常应该怎么处理,捕获到异常后应该...
项目知识详解: 整体项目基于springboot框架开发 数据库采用了mysql 以及 JPA 实现对数据库的链接 ...依次是javabean,配置类,contrler层,dao层,实体类,异常定义,异常处理,拦截类,service层,工具类
实体类开发——使用Lombok快速制作实体类 Dao开发——整合MyBatisPlus,制作数据层测试类 Service开发——基于MyBatisPlus进行增量...项目异常处理 按条件查询——页面功能调整、Controller修正功能、Service修正功能
为了更好地与持久层框架整合,Spring还提供了统一的异常处理体系和事务管理方法。 24.1 概述 24.1.1 概述 如果Spring与Hibernate进行了整合,则Hibernate便处于被Spring管理的状态下,Hibernate所需的基础资源,都由...
CLOUDSTACK中使用SPRING 17 6.1. CLOUDSTACK组件 18 6.2. 如何声明一个CLOUDSTACK组件 19 6.3. AUTO-WIRING 19 6.4. CLOUDSTACK SPRING组件的编码约定 20 6.4.1. 注意自动注入的时间 20 6.4.2. 公用构造器 20 6.4.3...
事务声明在Dao中,但是通常都会在Service中来处理多个业务逻辑的关系,如:删除,更新等,此时如果在执行了一个步骤之后抛出抛出异常就会导致数据部完整,所以事务不应该在Dao中处理,而应该在Service中处理,这也是...
适合人群 1、具备一定Java编程基础。 2、对springboot,spring,mybatis,mybatis ...4、本项目集成了spring,aop,mybatis plus,swagger2,异常处理,分页,freemarker等多种技术。 5、操作手册参见项目中的README.md文件