DAO 设计模式(面向接口编程的思想) J2EE 开发人员使用数据访问对象(DAO)设计模式把底层的数据访问逻辑和高层的商务逻辑分开.实现DAO 模式能够更加专注于编写数据访问代码. 我们先来回顾一下DAO 设计模式和数据访问对象. DAO 基础 DAO 模式是标准的J2EE 设计模式之一.开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开.一个典型的DAO 实现有下列几个组 件 : 1. 一个DAO 工厂类; 2. 一个DAO 接口; 3. 一个实现DAO 接口的具体类; 4. 数据传递对象(有些时候叫做值对象). 具体的DAO 类包含了从特定的数据源访问数据的逻辑。在下面的这段中你将学到设计和实现数据访问对象的技术。 事务划分: 关于DAO 要记住的一件重要事情是它们是事务性对象。 每个被DAO 执行的操作(象创建,更新、或删除数据)都是和事务相关联的。同样的,事务划分 ( transaction demarcation)的概念是特别重要的。 事务划分是在事务界定定义中的方式。J2EE 规范为事务划分描述了两种模式:编程性事务( programmatic)和声明性事务 ( declarative) .下表是对这两种模式的拆分: 声明性事务划分 编程性事务划分 程序员使用EJB 的布署描述符声明事务属性 程序员担负编写事务逻辑代码的责任。 运行时环境(EJB 容器)使用这些属性来自动的管理事务。 应用程序通过一个API 接口来控制事务。 我将把注意力集中的编程性事务划分上。 象前面的介绍一样,DAOs 是一些事务对象。一个典型的DAO 要执行象创建、更新、和删除这的事务性操作。在设计一个DAO 时,首先要问自己如下 问题: 1、 事务将怎样开始? 2、 事务将怎样结束? 3、 那个对象将承担起动一个事务的责任? 4、 那个对象将承担结束一个事务的责任? 5、 DAO 应该承担起动和结束事务的责任? 6、 应用程序需要交叉访问多个DAO 吗? 7、 一个事务包含一个DAO 还是多个DAO? 8、 一个DAO 包含其它的DAO 中的方法吗? 回答这些问题将有助于你为DAO 对象选择最好的事务划分策略。对 ADO 中的事务划分有两个主要的策略。一种方法是使用DAO 承担事务划分的责任; 另一种是延期性事务,它把事务划分到调用DAO 对象的方法中。如果你选择前者,你将要在DAO 类中嵌入事务代码。如果你选择后者,事务代码将被写在DAO 类的外部。我们将使用简单的代码实例来更好的理解这两种方法是怎样工作的。 实例1 展示了一个带有两种数据操...