李兴华javadao设计模式

上传人:第*** 文档编号:61594154 上传时间:2018-12-05 格式:DOCX 页数:21 大小:324.74KB
返回 下载 相关 举报
李兴华javadao设计模式_第1页
第1页 / 共21页
李兴华javadao设计模式_第2页
第2页 / 共21页
李兴华javadao设计模式_第3页
第3页 / 共21页
李兴华javadao设计模式_第4页
第4页 / 共21页
李兴华javadao设计模式_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《李兴华javadao设计模式》由会员分享,可在线阅读,更多相关《李兴华javadao设计模式(21页珍藏版)》请在金锄头文库上搜索。

1、4.1、关于设计分层的初步概念 在软件开发过程之中一定要存在有一个程序的层次概念,每一个程序层次都要完成某些具体的操作,而在一般情况下,分层的原则:不超过三层的原则,而常见的分层模式如下。 以上只是给出了一些层次的基本描述名称,但是严格来讲,每一层还会有更多的划分,如果是一个更加严格的划分,有可能划分成如下的形式。 对于业务层如果是一些简单的程序开发,以上的形式已经够使用了,但是很多时候还会遇见一些更为复杂的应用,那么业务层上还会继续进行划分。 今天的任务不是去研究控制层,也不是研究显示层,而专注于业务层与数据层,而且最为基本的操作是只存在一层业务。一直强调,业务层是整个项目的核心,而你们最大

2、的特点是在业务层上表现。 那么下面就以刁雪冰后面站着听课为例,说明业务层和数据层的关联。 通过以上的分析就可以发现,一个业务层需要调用多个数据层,而数据层所提供的都是数据库的原子性操作(INSERT、UPDATE、DELETE、SELECT)。那么就可以给出概念: 数据层(数据访问层、持久层),一般会使用“Data Access Object”表示,简称为DAO,在DAO之中提供的是一系列的数据库操作标准(接口); 业务层(服务层),一般会使用“Service”表示,由于业务层最终也是要给控制层进行调用(今天给客户直接调用)、所以业务层也需要有一个自己的操作标准,而一个业务层就需要调用多个数据

3、层。4.2、实例分析 现在要求使用emp表(基本字段:empno、ename、job、hiredate、sal、comm)实现如下功能: 【业务层】实现新雇员的增加操作; |- 数据层雇员的编号是由用户自己输入的,所以必须首先确定雇员编号是否存在,需要查询; |- 数据层如果雇员编号不存在,则执行增加操作,更新; 【业务层】实现雇员的修改操作; |- 数据层直接修改雇员数据; 【业务层】实现雇员的删除操作; |- 数据层直接删除雇员数据; 【业务层】可以根据雇员编号查询出雇员的完整信息; |- 数据层直接根据编号做限定查询; 【业务层】可以显示全部雇员记录; |- 数据层查询雇员表的全部数据

4、【业务层】可以分页显示全部雇员记录,或者可以使用模糊查询进行关键字匹配,在返回全部记录的同时还需要返回本次查询的总数据量; |- 数据层使用LIKE模糊查询查询满足条件的数据信息; |- 数据层使用COUNT()函数统计满足条件的数据量。 通过以上的分析就可以清楚的发现,一个业务层还是调用了多个数据层,所以在日后用户所提出的全部要求的细分,基本上都是业务层分析,而只有确定了业务之后才可以确定出数据层。4.3、代码的准备 首先需要打开Oracle的系统服务,而后建立一个新的项目 DAOProject,同时在项目之中配置好所需要的数据库驱动程序。 系统的开发之中需要有包的规范,现在假设父包名称为:

5、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;imp

6、ort 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 ; pr

7、ivate 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)

8、 try this.conn.close(); catch (SQLException e) e.printStackTrace(); 严格来讲以上的写法只是一个简便写法,因为日后是为了向框架开发靠拢,所有一些地方就需要做一些修改,而最早的时候,对于DAO设计模式的主要功能是为了解决掉数据库的可移植操作问题。4.3.2、开发简单Java类 简单Java类指的就是类的结构比较单一,主要是由属性、setter/getter方法所组成,简单Java类的主要功能是作为一种数据的载体进行存放,而日后对于简单Java类也会出现如下的名称:POJO(简单Java类)、VO(值对象)、TO(DTO,数据传输对

9、象,主要用于分布式)、PO(持久化对象)。可是对于简单Java类的组成结构在开发之中也有了明确要求: 简单Java类的最主要的设计思想来源于数据表,所以一定要和数据表的结构映射上; 简单Java类的名称要与数据表的名称保持一致,注意大小写,例如:member_info表,类:MemberInfo; 为了方便程序扩展,所有的简单Java类必须实现java.io.Serializable接口; 类之中的属性必须使用private封装,封装后的属性一定要编写setter、getter方法; 类之中一定要提供有无参构造方法; 类之中不允许使用基本数据类型,所有的基本类型要全部替换为包装类; 类之中不允

10、许出现任何的输出语句,所有的输出必须交给被调用处执行; 类可以有选择性的覆写Object类的:equals()、hashCode()、toString()。 简单Java类要求保存在cn.mldn.oracle.vo包中。范例:定义Member.java类package cn.mldn.oracle.vo;import java.io.Serializable;import java.util.Date;SuppressWarnings(serial)public class Emp implements Serializable private Integer empno ; private

11、 String ename ; private String job ; private Date hiredate ; private Double sal ; private Double comm ; / setter、getter略 此时类之中默认提供有一个无参构造方法,所以此时的类完全符合于简单Java类的开发标准。4.4、开发数据层:DAO层 数据层又分称为持久层,指的是进行持久化数据操作的。持久层属于DAO层,所以在进行开发的时候首先要开发出操作的标准,而后进行子类的实现。4.4.1、持久层标准 因为持久层最终要交给业务层进行调用,所以持久层必须有一个自己的操作接口,用于定义标准

12、,但是此接口的命名是有要求的,如果当前操作的是emp表,那么这个接口应该命名为EmpDAO,但是为了区分接口还有类,所以现在要求在接口定义前增加一个字母I,所以emp表的持久层标准名称:IEmpDAO,而且此接口要保存在cn.mldn.oracle.dao下。 在数据层之中定义的方法严格来讲就只有两类: 数据更新操作:此类方法的命名以“doXxx()”的形式,例如:doCreate()、doUpdate()、doRemove(); 数据查询操作:查询会分为两个小类: |- 数据查询:此类方法以“findXxx()”命名,例如:findById()、findByJob()、findAll(); |- 统计查询:此类方法以“getXxx()”命名,例如:getAllCount()。范例:定义IEmpDAO接口package cn.mldn.oracle.dao;import java.util.List;import cn.mldn.oracle.vo.Emp;public interface IEmpDAO public boolean doCreate(Emp vo) throws Exception ; public boole

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号