1. 前言
在本人开发的一个系统中需要提供注册和登陆系统,自然需要有用户管理,对用户需要进行基础的增删改查,DAO是常用的设计模式之一,对数据访问进行抽象,可以大大减低不同的数据库之间移植的工作量,本文主要根据本人实现自己DAO模型的过程,讲述DAO设计模式以及本人是如何使用DAO实现对数据的访问的。
2. DAO设计模式
DAO全程是Data Access Object,是J2EE核心模式之一,主要用于上层应用程序与持久化机制之间的中间层,对于底层的数据库持久化,其各部分关系答题如下:
使用DAO的好处是可以使上下的各个模块相对独立,只要DAO的接口不变化,即使上层的应用代码或者底层的持久层的实现频繁变化,相互之间几乎没有影响。
使用DAO设计模式的时候需要注意的是尽量不要让底层的实现泄露给上层,DAO的核心是DAO接口(interface),DAO由以下几个部分组成:
DatabaseConnection: 专门负责数据库的打开与关闭的类。
VO:主要由属性、setter、getter方法组成,VO类中的属性与表中的字段相对应,每个VO类的对象都表示表中的一条记录。
DAO:主要定义操作的接口,定义一系列数据库的原子性操作标准,如增加、修改、删除、插入、按照ID查询等。
Impl:DAO接口的真实实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭。
Proxy:代理实现类,主要完成数据库的打开和关闭,并且调用真实实现类对象的操作。
Factory:工厂类,通过工厂类取得一个DAO 的实例化对象。
3. 编码实现
下面我们实现一个对用户进行增删改查的DAO样例,各个包的含义如下:
ebs.dao.factory: 里面主要存放获取数据库连接实例的工厂类
ebs.dao.proxy: DAO的代理实现
ebs.dao.user: DAO的实现
ebs.dbc.DBConnection: 主要存放数据库连接相关的实现类
ebs.system.vo: 主要存放VO类的实现
即,如下: