DAO是什么
DAO(数据访问对象)在web程序设计中是业务逻辑层和数据库之间的一个层级。用来接收业务请求并对数据库进行处理。
了解DAO,首先要知道web开发的层级。
现在的web开发主要使用的是MVC的设计模式。所以按照“显示-业务-控制器”的理念。我们将web分为客户层、显示层、业务层、数据层(DAO)和资源层(数据库)。
客户层就是客户使用的浏览器。这一端基本上不用我们处理。
显示层就是显示在用户浏览器上的各种画面,现在广泛使用JSP。
业务层是整个项目的核心。对多个DAO操作进行组合。
数据层(DAO)是专门提取出来处理数据库的操作对象。是一个个原子性的对象。
资源层主要是数据库的操作层,可以对数据进行增删改查。但是如果直接使用资源层操作处理数据库,会让代码变得复杂混淆难以重用。所以我们将操作提炼出来,也就成了DAO层。
DAO的组成
一个DAO一共由六个类或者接口组成。他们分别是:
DatabaseConnection:专门负责数据库的打开和关闭。
VO:由属性、setter和getter方法组成。它的每一个属性和表中的字段相对应,每一个VO类实例化的对象,就表示了表中的一条记录。这个类的名字和表名要一致。假设表名为xxx
DAO:这是一个接口,来预先定义一系列增删改查的操作。命名规则为IxxxDAO.java。
Impl:DAO的真实实现类,命名规则为xxxDAOImpl。这个类最好放到DAO的子包里面。要给这个类写一个构造方法,传入一个connection的对象。然后复写DAO中定义的方法即可。
Proxy:代理实现类,就是打开关闭数据库,然后调用Impl来实现。命名规则是xxxDAOProxy。
Factory:工厂类,通过工取得DAO的实例化对象。命名规则是DAOFactory。实际使用此DAO操作时,只需要导入VO所在的包和工厂包即可。
DAO接口的设计
DAO接口是用来预定义操作的。
增加表单中的条目
publicBoolean doCreat(VO对象) throws Exception;
查找并返回所有符合关键字的VO
publicList<VO类> findAll(String keyWord) throws Exception;
查找符合ID的单个VO
publicVO类 findById(int id) throws Exception;
DAO模型
在模式I中,使用这样的封装之后,只需要调用方法,就可以对数据库进行操作。
比如在JSP提交页面后的跳转页面里,用scriptlet定义一段代码,实例化一个VO,并根据表单赋值,然后调用插入的方法,就可以可以成功插入一个新的VO了。
在MVC模式中,也会使用DAO。区别是在JSP和DAO之间加入了Servlet,使得数据层和表示层进一步的分离。