DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道,夹在业务逻辑与数据库资源中间。详解DAO模式(上)
在核心J2EE模式中DAO的定义是:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。
按老夫的理解来说:就是单独建立一个可以进行数据库增、删、改、查等操作的类,以后进行任何有关数据库的操作,只实例化该类并调用在该类中预先写好的方法进行操作即可。DAO模式使表示层与业务逻辑层的代码进一步分离开来,这样可以降低代码之间的耦合度,例如JSP或HTML语言中不会混合过多的Java代码和SQL语句。
实话说,在写DAO的时候个人感觉挺麻烦的,但是一旦写完DAO之后,剩下的工作就可以减少之后很多不必要的麻烦了。因为使用工厂的设计模式可以对其进行管理,在需要数据库操作的JAVA或者JSP里只需要导入一个工厂类就可以调用许多方法,去完成整个过程的数据操作。而且也使得后期的维护变得十分方便。
由上图我们可以看出:一个程序的标准开发结构分为客户层、显示层、业务层、数据层、资源层。以下为各层的介绍:
①客户层:如果该程序是一个网站系统,那么对应的客户层为用户的浏览器。
②显示层:主要是使用JSP或servlet进行页面显示。
③业务层(Business Object,业务对象):将多个原子性的DAO操作组合,形成一个完整的业务逻辑。
④数据层:提供多个原子性的DAO操作,例如:增、删、改、查子操作。
⑤资源层:数据库资源文件,只能使用DAO进行操作。
在整个DAO中实际上是以接口为操作标准的,即客户端依靠DAO实现的接口进行操作,而服务端要将接口进行具体的实现。
在老夫写的DAO中,主要分为了以下几个类:
①VO类:主要用属性、getter()、setter()组成。VO类中的属性与数据库中的字段一一对应,每一个VO类对象对应数据库该表中的一条记录。
②连接类:主要实现Java通过jdbc实现对Oracle数据库的连接。
③DAO的标准接口、真实实现类以及代理实现类:主要实现对数据库的操作。
④工厂类:通过工厂类获取一个DAO的实例化对象。
个人写了一个在网页中添加员工信息和查找员工信息简单的一个小程序,使用的是Oracle数据库。其中Emp是员工信息类。
Emp在Oracle的属性如下图:
想必各位都能看懂这些属性的意思吧,只是全大写有些不习惯。
以下是老夫写的类文件的概览图:
可能很多人会搞不清为什么要写那么多东西,给出它们的关系图一张:
下一节讲解具体内容 —— DAO模式(中)