在开发中通常包含显示层、控制层、数据层的操作,DAO设计模式就是将这些操作统一交给JSP或JavaBean来进行处理,将显示操作都写入JSP页面,业务层都写成JavaBean形式,将程序代码封装成组件。JavaBean将负责大部分的数据处理,如执行数据库操作等,再将数据处理后的结果返回至JSP页面上显示,如图1所示。
图1 DAO设计模式流程图
在这个模式中DAO主要完成数据的操作,客户端依靠DAO接口进行操作,服务端要将接口进行具体实现。DAO的主要组成由以下几个部分组成。
1、DatabaseConnection:专门负责数据库打开与关闭操作的类。
2、VO:主要由属性、setter、getter方法,VO类中的属性与数据表中的字段相对应。每一个VO对象相当于表中的一条记录。
3、DAO接口:主要定义数据库操作的接口,定义数据库的原子性操作,如增删改,按ID查询。
4、Impl:DAO的具体实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭,接口类的名称首字母用“I”,表示其是一个接口。
5、Proxy:代理实现类。主要完成数据库的打开和关闭,并调用Impl类对象的操作,之所以增加代理类是为了以后的拓展,如果一个程序可以A-B,那么中间 最好加一个过渡,使用A-B-C的形式,可以有效减少程序的耦合度,使开发结构更加清晰。
6、Factory:工厂类,通过工厂类取得一个DAO的实例化对象,编写工厂类也是为了降低代码的耦合度,工厂类产生实例的方法通常是静态函数,这样一来就 可以通过工厂类名直接生成实例。
用JSP+DAO模式开发的程序可读性高和可重复利用性高,这是由JavaBean的特性决定的,由于大部分程序代码在JavaBean中,不会和JSP中的标记搞混,可读性好,有利于后期维护。另一方面,程序中的类都编写在JavaBean中,大大减少了编写重复性程序代码的工作,最适合小型的程序开发。
这种模式也有它的弊端——没有流程控制。对程序中每一个JSP页都需要检查参数是否正确,条件判断、异常时发生的处理,而且显示操作和与具体业务代码耦合在一起,维护起来困难。MVC设计模式很好地避免了这个弊端。