快速业务通道

高级DAO编程 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

Jakarta Commons Logging 可以与 java.util.logging 或者 Jakarta Log4j 一同使用。Commons Logging 是一个日志抽象层,它隔离了应用程序与底层日志实现。使用 Commons Logging,您可以通过改变配置文件更换底层日志实现。Commons Logging 在 Jakarta Struts 1.1 和 Jakarta HttpClient 2.0 中使用。

高级DAO编程(6)

时间:2011-02-08 IBM Sean C. Sullivan

一个日志记录示例

清单 7 显示了如何在 DAO 类中使用 Jakarta Commons Logging:

清单 7. DAO 类中的 Jakarta Commons Logging

import org.apache.commons.logging.*; class DocumentDAOImpl implements DocumentDAO {    static private final Log log = LogFactory.getLog(DocumentDAOImpl.class);    public void deleteDocument(String id)    {      // ...      log.debug("deleting document: " + id);      // ...      try      {        // ... data operations ...      }      catch (SomeException ex)      {        log.error("Unable to delete document", ex);        // ... handle the exception ...   }    } }

日志记录是所有任务关键型应用程序的重要部分。如果在 DAO 中遇到故障,那么日志通常可以提供判断出错位置的最好信息。将日志加入到 DAO 可以保证您有机会进行调试和故障排除。

DAO 中的异常处理

我们讨论过了事务界定和日志,现在对于如何在数据访问对象上应用它们有了更深入的理解。我们的第三个和最后一个讨论议题是异常处理。遵从几个简单的异常处理指导可以使您的 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 异常类。

高级DAO编程(7)

时间:2011-02-08 IBM Sean C. Sullivan

实现实例: MovieDAO

MovieDAO 是一个展示本文中讨论的所有技术的 DAO:事务界定、日志和异常处理。您可以在 参考资料一节中找到 MovieDAO 源代码。代码分为三个包:

daoexamples.exception

daoexamples.movie

daoexamples.moviedemo

DAO 模式的这个实现包含下面列出的类和接口:

daoexamples.movie.MovieDAOFactory

daoexamples.movie.MovieDAO

daoexamples.movie.MovieDAOImpl

daoexamples.movie.MovieDAOImplJTA

daoexamples.movie.Movie

daoexamples.movie.MovieImpl

daoexamples.movie.MovieNotFoundException

daoexamples.movie.MovieUtil

MovieDAO 接口定义了 DAO 的数据操作。这个接口有五个方法,如下所示:

public Movie findMovieById

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号