两、三年前说过要坚持写文剖析各种算法、面向对象、框架、架构及各种应用技术,然进展缓慢,一者力有不逮,二者工作变动,无暇它顾。如今咬牙还债,算给自己个交代。这次就从最常用的DAO开始吧,
- 数据访问的封装
J2EE应用开发中,数据库的使用非常频繁,大多公司里所使用的Framework都有对数据库操作进行封装的被称为DAO层的部分。下面,我结合自己在不同时期所参与的项目,就各种DAO层的封装方式进行一下比照,借此也可以梳理一下技术发展的进化轨迹。
- 项目1 (久远,尚无SSH流行)
- 使用方式
- 用户DAO继承BaseDAO
- 在业务模块初始化用户DAO,并传递给如下3个参数
- String dataSourceName 数据源名称(JNDI).
- boolean autoReleaseConnection 是否自动释放链接.
- boolean useStoreProcedure 是否使用存储过程.
- 在业务模块根据需要调用用户DAO对象的相应方法.
- 例子:
业务逻辑中调用: UserDAO userDAO = new UserDAO(null,false,false); List allUser = userDAO.getAllUser();
- 原理
- UML

- 优点:省却了婆婆妈妈的RecordSet, Statement的声明和繁琐重复的异常捕获。
- 缺点
- 把DAO的模式控制放进业务模块里不合适。
- 只支持单一数据库。