软件系统集成层模块设计中所涉及的设计模式的应用实例(第2部分)
- 格式:pdf
- 大小:294.85 KB
- 文档页数:12
杨教授工作室,版权所有,盗版必究, 2/12 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
(2)序列图
7、上面的各个对象的说明 1) 业务对象(Business Object)。表示数据的用户,它需要对于数据的访问,一个业务对象 可以用会话 bean、实体 bean 或是其他 Java 程序来实现。 2) 数据访问对象(Data Access Object)。数据访问对象是这种模式中的主题,它提供了底 层数据访问的对象,并将其提供给业务对象以使得后者能够透明地访问数据源;同时 业务对象也将数据的加载和存储操作移交给数据访问对象处理。 3) 数据源(Data source)。这里ቤተ መጻሕፍቲ ባይዱ的是数据源的物理实现,这个数据源可以是一个数据库, 包括关系型数据库、面向对象数据库或文件系统。 4) 传输对象(Transfer Object)。这里的传输对象指的是数据载体。数据访问对象可以使用
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
目
录
1.1
软件系统集成层模块设计中所涉及的设计模式的应用实例(第 2 部分) .............2 1.1.1 1.1.2 1.1.3 1.1.4 数据访问对象(data access object,DAO)模式 ......................................................2 BMP Bean 和 DAO 模式、利用工厂模式实现抽象 DAO ...................................4 利用工厂方法模式实现获得对不同的数据源的连接 ..........................................7 Fast-Lane Reader 模式 .......................................................................................... 11
杨教授工作室,版权所有,盗版必究, 1/12 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
1.1
软件系统集成层模块设计中所涉及的设计模式的应用实例(第 2 部分)
1.1.1 数据访问对象(data access object,DAO)模式 1、DAO 模式简介 将对数据源的访问(也就是获得数据库的连接)抽象为一个类,从而利用数据访问对象 可以实现对不同数据库类型和形式的数据资源进行访问。。 2、应用的技术背景 1) 这种模式出现的背景在于数据访问的逻辑极大程度上取决于数据存储的格式 2) 比如说关系型数据库、面向对象数据库、磁盘文件等。 3、为什么要使用 DAO 模式 1) 目前大部分的 J2EE 应用程序都需要在一定程度上使用可持久性的数据,而实现持久 性数据的方法因应用程序不同而异, 并且访问不同存储格式数据的应用程序接口(API) 也有着显著的差别; 2) 有的时候,应用程序还会访问存储在不同操作平台上的数据,这使得问题更为复杂 3) 在 Java 语句中可以嵌入 SQL 语句,用以访问关系型数据库,当然根据数据库类型的 不同,SQL 语句的词法和语法也会有所不同; 需要说明的是,当数据存储格式不同的时候,数据访问逻辑的区别就更加明显了,例如 关系型数据库、面向对象数据库和磁盘文件,各自数据的访问逻辑各有千秋,这样一来就造 成了程序代码和数据访问代码之间的依赖关系 4、DAO 模式的类图和序列图 (1)类图
杨教授工作室,版权所有,盗版必究, 3/12 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
传输对象来向用户返回数据, 而数据访问对象同样可以从用户那里得到传输对象来对 数据源中的数据进行更新。
1.1.2 BMP Bean 和 DAO 模式、利用工厂模式实现抽象 DAO 1、在 BMP Bean 中使用 DAO 模式 对涉及复杂和灵活的数据查询功能,应该采用 BMP Bean 或者会话组件中使用 DAO 来实现。 同时为了使 BMP Bean 组件中的数据访问代码与具体的数据库类型相互隔离,采用 DAO 模式来 提供数据存储支持。而对 DAO 的具体实现又采用工厂模式来实现。 因为如果在 EJB 中如果有同特定数据源有关的代码,则应用程序和数据库类型间将形成 紧密耦合。结果使应用程序失去灵活性与可维护性。而 DAO 模式则可以将 EJB 和数据源解耦。 这样,您将可以很容易地改变数据源的类型。 2、使用 DAO 模式的优点 采用 DAO 模式后,任何数据源中的改变只需要对 DAO 进行相应改变即可。而且,为了让 应用程序能够支持不同类型的数据源, 您可以为不同类型的数据源开发不同的数据存取对象。 在这种情况下,EJB 可以通过使用工厂对象取得 DAO,工厂对象从配发环境中轮流取得 DAO。 按这种方式实现的应用程序能很容易地从一种数据类型转变到另一种,因为不需要任何代码 变动。 3、典型的 DAO 模式所包含的组件 DAO 模式是标准 J2EE 设计模式之一,开发人员用这种模式将底层数据访问操作与高层 业务逻辑分离开。一个典型的 DAO 实现有以下组件: 1) 一个 DAO 工厂类 2) 一个 DAO 接口 3) 一个实现了 DAO 接口的具体类 4) 数据传输对象(有时称为值对象) 4、DAO 模式的具体实现代码 请见下面的工厂方法的程序代码示例。 5、在 DAO 模式中所应该考虑的事务问题
杨教授工作室,版权所有,盗版必究, 4/12 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
(1)DAO 中的界定事务的策略 由于 DAO 一般是事务性的对象,一个典型的 DAO 执行像创建、更新和删除这样的事务性 操作。在 DAO 中有两种主要的界定事务的策略。 1) 一种方式是让 DAO 负责界定事务 2) 另一种将事务界定交给调用这个 DAO 方法的对象处理 如果选择了前一种方式,那么就将事务代码嵌入到 DAO 中。如果选择后一种方式,那么 事务界定代码就是在 DAO 类外面。 (2)事务界定代码在 DAO 类外的示例 DAO 类中的方法示例(创建和更新) public void createWarehouseProfile(WHProfile profile); public void updateWarehouseStatus(WHIdentifier id, StatusInfo status); 事务界定在 DAO 类外面(调用者管理的事务) tx.begin(); // 启动事务界定