防灾科技学院 刘庆杰
摘要:本文通过一个容易理解的案例将抽象的DAO设计模式分解为设计连接池、设计实体类、设计访问接口、实现访问接口、代理类与DAO工厂5个步骤,将《Web应用技术》课程中的MVC开发的分层为数据层与业务层,实现了数据访问封装独立封装,为构建灵活、健壮、松耦合的Web应用打下可靠的基础。
关键字:DAO;松耦合;设计接口;数据层
0、引言
DAO(Data Access Object)设计模式是Web应用开发最重要的开发模式,使用DAO设计模式可以优化代码结构,增强程序移植性.Web应用程序中, 页面的数据库访问是通过JDBC, 代码直接嵌入到JSP页面中,JSP页面动辄几百上千行,HTML+JDBC+Java的混合开发模式导致代码杂乱,开发过程难以控制,应用难以维护,软件难重构,代码无法耦合,对于软件的健壮性与扩展性都是灾难.优化后的页面应该是将Web应用中的数据显示与数据访问通过组件实现耦合,前端页面只专注数据的显示与表达,后端的封装组件来实现数据的访问,不需要去关注数据是从哪里来的,。这种将数据的访问封装为数据层的设计就是DAO模式,DAO设计能够实现应用系统数据表达层与数据操作层的分离,实现软件的松耦合与扩展性。
1、 DAO设计模式的基本构成
一般情况下,DAO设计模式由5个设计类组成, 分别是:连接池类、VO类、接口类、实现类、工厂类。
(1) 数据连接池。数据库连接池就是将一些提前建立的数据库访问对象保存在一个全局访问的静态类中,静态类负责数据库连接对象的管理和释放数据库连接,释放后的连接对象继续释放到连接池,并不关闭连接,这项技术能明显提高对数据库访问的性能。
(2) VO类。VO类就是一个与数据表对应的数据操作类,DAO通过业务接口通过操作VO类来实现访问数据库,一个VO实体对象对应一行数据库记录,该类的属性都应该seter、getter方法来实现属性操作。
(3) DAO接口。DAO接口用来对外提供操作数据的各种访问函数,根据业务需要,一个DAO一般都至少提供增删查改四种操作函数。
(4) DAO实现类。DAO实现类就是DAO接口的方法重写。DAO接口的抽象化有利于软件的松耦合,是将定义与具体代码剥离的一种常见方式。在DAO实现类函数中,将访问数据库的SQL语言操作封装起来,对外提供基于对象的形参或者返回值,实现从面相数据的编程到面相对象编程的升级,这种实现方式也是O/RMapping技术实现原型,有利于代码的复杂封装,简单接口。
(5) 工厂类。工厂类负责返回DAO实现类, 工厂模式的优点就是将对象的创建工作交给工程来负责,实现来对象的创建于对象的使用的解耦,提高了软件的扩展性,降低了软件的维护性。
2、DAO设计模式的开发流程与命名规范
一个完整的DAO设计一般需要如下几个步骤:
第一步,设计一个专门负责打开连接数据库和关闭数据库操作的类。命名规则:xxx.dbc.DatabaseConnection;
第二步,根据数据表,为该数据谁一个VO对象,其主要有属性和setter和getter方法构成。命名规则:xxx.vo.ttt;
第三步,设计个一个接口,该接口包含四个抽象的增删查改public函数,命名规则:xxx.dao.IXxx.DAO;
第四步,设计DAO接口的真正实现的类,将增删查改操作代码化,访问数据库的动作有连接池完成。命名规则:xxx.dao.impl.xxxDAOImpl;
第五步,设计一个Factory类,一般的Factory类主要通过单例模式创建一个DAO实现对象,然后提供一个返回接口。命名规则:xxx.factory.DAOFactory;
3、一个DAO案例实践
3.1 ?定义一个数据库连接池类DBPools,为了方便我们将所有的异常向上抛出调用方法,下面也使用同样的方式。
.png)
.png)
3.2 设计VO类,对应数据表格的三列:员工编号、员工姓名、工作、雇佣日期。
.png)
3.3定义对DAO接口操作,为了进行一下简单的测试,我们仅仅定义了增加和两种查询操作,这个实例主要验证增加和查询操作。实现三个访问接口,增加、关键字查找、按编号查找。
.png)
3.4定义正式的DAO接口实现类
.png)
.png)
.png)
3.5最后设计一个DAO工厂类,这个主要用来获取DAO接口的实例化对象:
public class DAOFactory {
.png)
4、结语
DAO模式是一种将数据操作与业务操作分离的设计模式,通过将底层数据的操作的组件封装,是实现业务代码数据操作的透明化,实现了软件的代码的高聚合、松耦合与扩展性.本文通过一个详实的案例将一个DAO设计模式的过程流程化、步骤化,让学生能够比较清楚、直观、易懂的掌握DAO设计模式,达到举一反三、融会贯通的教学目的。
参考文献:
[1]计文柯.Spring技术内幕:深入解析Spring架构与设计原理[M].北京:机械工业出版社,2012.
[2]张家精.DAO技术在数据库访问中的应用与实现[J].计算机与现代化, 2012 (12) .
[3]肖正宏.数据访问技术——DAO、ADO、RDO的比较[J].电脑与信息技术, 2013 (3) .
[4]孙卫琴.精通Hibernate:Java对象持久化技术详解[M].北京:电子工业出版社, 2013.
[5]王卫军,楚宁志,吕军.Java软件体系结构设计模式标准指南[M].北京:电子工业出版社,2006.
[6]白广元.Java Web整合开发完全自学手册[M].北京:机械工业出版社,2009.