- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级 DAO 编程
高级 DAO 编程在过去 18 个月中,我参加了一个由有才华的软件工程师组成的小组,构建定制的、基于 Web 的供应链管理应用程序。我们的应用程序访问范围广泛的持久性数据,包括配送状态、供应链衡量(metrics)、库存、货运发票、项目管理数据和用户信息。我们用 JDBC API 连接到我们公司的不同数据库平台上,并在整个应用程序中使用 DAO 设计模式。图 1 显示了应用程序和数据源之间的关系:图 1. 应用程序和数据源在整个应用程序中使用数据访问对象(DAO)使我们可以将底层数据访问逻辑与业务逻辑分离开来。我们构建了为每一个数据源提供 GRUD (创建、读取、更新、删除)操作的 DAO 类。在本文中,我将为您介绍构建更好的 DAO 类的 DAO 实现策略和技术。更确切地说,我将讨论日志、异常处理和事务界定。您将学到如何将这三者结合到自己的 DAO 类中。本文假定您熟悉 JDBC API、SQL 和关系数据库编程。我们将以对 DAO 设计模式和数据访问对象的概述开始。DAO基础DAO 模式是标准 J2EE 设计模式之一。开发人员用这种模式将底层数据访问操作与高层业务逻辑分离开。一个典型的 DAO 实现有以下组件:一个 DAO 工厂类一个 DAO 接口一个实现了 DAO 接口的具体类数据传输对象(有时称为值对象)具体的 DAO 类包含访问特定数据源的数据的逻辑。在下面一节中您将学习设计和实现数据访问对象的技术。有关 DAO 设计模式的更多内容请参阅?/developerworks/cn/java/j-dao/参考资料。/developerworks/cn/java/j-dao/回页首事务界定关于 DAO 要记住的重要一点是它们是事务性对象。由 DAO 所执行的每一个操作 -- 如创建、更新或者删除数据 -- 都与一个事务相关联。因此,?事务界定的概念就变得特别重要了。事务界定是定义事务边界的方式。J2EE 规范描述了两种事务界定的模型:编程式(programmatic)和声明式(declarative)。表 1 分析了这两种模型:表 1. 两种事务界定的模型声明式事务界定编程式事务界定程序员用 EJB 部署描述符声明事务属性。程序员负责编写事务逻辑。运行时环境(EJB 容器)用这些属性自动管理事务。应用程序通过一个 API 控制事务。我们将侧重于编程式事务界定。设计考虑如前所述,DAO 是事务性对象。一个典型的 DAO 执行像创建、更新和删除这样的事务性操作。在设计 DAO 时,首先要问自己以下问题:事务要如何开始?事务应如何结束?哪一个对象将负责开始一个事务?哪一个对象将负责结束一个事务?DAO 是否要负责事务的开始和结束?应用程序是否需要通过多个 DAO 访问数据?事务涉及到一个 DAO 还是多个 DAO?一个 DAO 是否调用另一个 DAO 的方法?了解上述问题的答案将有助于您选择最适合的 DAO 的事务界定策略。在 DAO 中有两种主要的界定事务的策略。一种方式是让 DAO 负责界定事务,另一种将事务界定交给调用这个 DAO 方法的对象处理。如果选择了前一种方式,那么就将事务代码嵌入到 DAO 中。如果选择后一种方式,那么事务界定代码就是在 DAO 类外面。我们将使用简单的代码示例帮助您更好理解每一种方式是如何工作的。清单 1 显示了一个有两种数据操作的 DAO:创建和更新:清单 1. DAO 方法 public void createWarehouseProfile(WHProfile profile); public void updateWarehouseStatus(WHIdentifier id, StatusInfo status);清单 2 显示了一个简单的事务。事务界定在 DAO 类外面。注意在这个例子中调用者是如何在一个事务中结合多个 DAO 操作的。清单 2. 调用者管理的事务 tx.begin(); // start the transaction dao.createWarehouseProfile(profile); dao.updateWarehouseStatus(id1, status1); dao.updateWarehouseStatus(id2, status2); mit(); // end the transaction这种事务界定策略对于需要在一个事务中访问多个 DAO 的应用程序特别有用。可以用 JDBC API 或者 Java 事务 API(Java Transaction API JTA)实现事务界定。 JDBC 事务界定比 JTA 事务界定要简单,但是 JTA 提供了更多的灵活性。在下面一节中我将更深入地分析事务界定的机制。/developerworks/c
您可能关注的文档
最近下载
- (高清版)-B-T 3565.5-2022 自行车安全要求 第5部分:车把试验方法.pdf VIP
- 工程保险合同纠纷裁判指引_记录.docx VIP
- 福建省房屋建筑和市政基础设施工程质量监督抽查抽测规定试行.doc VIP
- 《自然语言处理技术及应用》课程标准.pdf VIP
- 宗教的文化专题——道教.ppt VIP
- (最新)知识考核旅行社计调三级真题精选附答案(答案在末尾).docx
- 临床常见病的中西医诊疗与康复新进展题库答案-2025年华医网继续教育答案.docx VIP
- (正式版)D-L∕T 266-2023 接地装置冲击特性参数测试导则.docx VIP
- (正式版)D-L∕T 266-2012 接地装置冲击特性参数测试导则.docx VIP
- ABB XT2-XT4 电子脱扣器 Ekip Dip LSI-LSIG 手册(中文).pdf
原创力文档


文档评论(0)