logo资料库

李兴华DAO设计模式.docx

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
1、课程名称
4、笔记内容
4.1、关于设计分层的初步概念
4.2、实例分析
4.3、代码的准备
4.3.1、数据库连接类:DatabaseConnection
4.3.2、开发简单Java类
4.4、开发数据层:DAO层
4.4.1、持久层标准
4.4.2、定义数据层实现类:EmpDAOImpl
4.4.3、建立数据层工厂类
4.5、开发业务层:Service层
4.5.1、业务层操作标准
4.5.2、定义业务层实现类
4.5.3、定义业务层工厂类
4.6、程序测试
4.6.1、编写主方法测试
4.6.2、使用JUNIT测试
4.7、开发部门操作
1、课程名称 DAO 设计模式 4、笔记内容 之前所学习的内容到昨天已经彻底告一段落(基本知识讲解完了), 之后的内容将以代码的开发为主,如果在之前所学习的内容不是很透 彻,你只要把今天所讲解的代码搞明白了,彻底会写了,写的很熟练 了,那么一切就都不是问题。 4.1、关于设计分层的初步概念 在软件开发过程之中一定要存在有一个程序的层次概念,每一 个程序层次都要完成某些具体的操作,而在一般情况下,分层的原则: 不超过三层的原则,而常见的分层模式如下。 以上只是给出了一些层次的基本描述名称,但是严格来讲,每 一层还会有更多的划分,如果是一个更加严格的划分,有可能划分成 如下的形式。
对于业务层如果是一些简单的程序开发,以上的形式已经够使 用了,但是很多时候还会遇见一些更为复杂的应用,那么业务层上还 会继续进行划分。
今天的任务不是去研究控制层,也不是研究显示层,而专注于 业务层与数据层,而且最为基本的操作是只存在一层业务。一直强调, 业务层是整个项目的核心,而你们最大的特点是在业务层上表现。 那么下面就以刁雪冰后面站着听课为例,说明业务层和数据层 的关联。
通过以上的分析就可以发现,一个业务层需要调用多个数据层, 而数据层所提供的都是数据库的原子性操作(INSERT、UPDATE、 DELETE、SELECT)。那么就可以给出概念: · 数据层(数据访问层、持久层),一般会使用“Data Access Object” 表示,简称为 DAO,在 DAO 之中提供的是一系列的数据库操作标 准(接口);数据层是给业务层来调用的,所以数据层需要有一个操 作标准。 · 业务层(服务层),一般会使用“Service”表示,由于业务层最终 也是要给控制层进行调用(今天给客户直接调用)、所以业务层也需 要有一个自己的操作标准,而一个业务层就需要调用多个数据层。
4.2、实例分析 现在要求使用 emp 表(基本字段:empno、ename、job、 hiredate、sal、comm)实现如下功能: 【业务层】实现新雇员的增加操作; |- 〖数据层〗雇员的编号是由用户自己输入的,所以必须首先 确定雇员编号是否存在,需要查询; |- 〖数据层〗如果雇员编号不存在,则执行增加操作,更新; 【业务层】实现雇员的修改操作; |- 〖数据层〗直接修改雇员数据; 【业务层】实现雇员的删除操作; |- 〖数据层〗直接删除雇员数据; 【业务层】可以根据雇员编号查询出雇员的完整信息; |- 〖数据层〗直接根据编号做限定查询; 【业务层】可以显示全部雇员记录; |- 〖数据层〗查询雇员表的全部数据 · 【业务层】可以分页显示全部雇员记录,或者可以使用模糊查询进 行关键字匹配,在返回全部记录的同时还需要返回本次查询的总数据 量; |- 〖数据层〗使用 LIKE 模糊查询查询满足条件的数据信息; |- 〖数据层〗使用 COUNT()函数统计满足条件的数据量。
通过以上的分析就可以清楚的发现,一个业务层还是调用了多 个数据层,所以在日后用户所提出的全部要求的细分,基本上都是业 务层分析,而只有确定了业务之后才可以确定出数据层。 4.3、代码的准备 首先需要打开 Oracle 的系统服务,而后建立一个新的项目 — — DAOProject,同时在项目之中配置好所需要的数据库驱动程序。 系统的开发之中需要有包的规范,现在假设父包名称为: cn.mldn.oracle。 4.3.1、数据库连接类:DatabaseConnection 在整个 JDBC 操作过程之中,数据库只有打开后才可以进行一 系列的操作,而后数据库的连接又必须关闭。那么为了方便控制,可 以直接将数据库的打开和关闭操作封装在一个类之中。 数据库的连接类保存包为“cn.mldn.oracle.dbc”,而且此数 据库的连接只针对于 Oracle 定义。 范例:定义 DatabaseConnection.java 类 package cn.mldn.oracle.dbc;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DatabaseConnection { private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ; private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:MLDN" ; private static final String DBUSER = "scott" ; private static final String PASSWORD = "tiger" ; private Connection conn ; // 准备出一个数据库连接对象 public DatabaseConnection() { try { Class.forName(DBDRIVER) ; this.conn = DriverManager.getConnection(DBURL, DBUSER, PASSWORD) ; } catch (Exception e) { e.printStackTrace(); } } public Connection getConnection() { return this.conn ; } public void close() { if (this.conn != null) { try {
this.conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } 严格来讲以上的写法只是一个简便写法,因为日后是为了向框 架开发靠拢,所有一些地方就需要做一些修改,而最早的时候,对于 DAO 设计模式的主要功能是为了解决掉数据库的可移植操作问题。 4.3.2、开发简单 Java 类 简单 Java 类指的就是类的结构比较单一,主要是由属性、 setter/getter 方法所组成,简单 Java 类的主要功能是作为一种数据 的载体进行存放,而日后对于简单 Java 类也会出现如下的名称: POJO(简单 Java 类)、VO(值对象)、TO(DTO,数据传输对
分享到:
收藏