JavaBean中DAO设计模式简介
一、信息系统的开发架构
客户层-------显示层-------业务层---------数据层---------数据库
1.客户层:客户层就是客户端,简单的来说就是浏览器。
2.显示层:JSP/Servlet,用于给浏览器显示。
3.业务层:对于数据层的原子操作进行整合。
4.数据层:对于数据库进行的原子操作,增加、删除等;
二、DAO(Data Access Object)介绍
DAO应用在数据层那块,用于访问数据库,对数据库进行操作的类。
三、DAO设计模式的结构
DAO设计模式一般分为几个类:
1.VO(Value Object):一个用于存放网页的一行数据即一条记录的类,比如网页要显示一个用户的信息,则这个类就是用户的类。
2.DatabaseConnection:用于打开和关闭数据库。
3.DAO接口:用于声明对于数据库的操作。
4.DAOImpl:必须实现DAO接口,真实实现DAO接口的函数,但是不包括数据库的打开和关闭。
5.DAOProxy:也是实现DAO接口,但是只需要借助DAOImpl即可,但是包括数据库的打开和关闭。
6.DAOFactory:工厂类,含有getInstance()创建一个Proxy类。
四、DAO的好处
DAO的好处就是提供给用户的接口只有DAO的接口,所以如果用户想添加数据,只需要调用create函数即可,不需要数据库的操作。
五、DAO包命名
对于DAO,包的命名和类的命名一定要有层次。
六、实例解析
1.Emp.java VO类
[java] view plaincopy
package org.vo;
import java.util.*;
public class Emp{
private int empno;
private String ename;
private String job;
private Date hireDate;
private float sal;
public Emp(){
}
public int getEmpno(){
return empno;
}
public void setEmpno(int empno){
this.empno = empno;
}
public String getEname(){
return ename;
}
public void setEname(String ename){
this.ename = ename;
}
public Date getHireDate(){
return hireDate;
}
public void setHireDate(Date hireDate){
this.hireDate = hireDate;
}
public float getSal(){
return sal;
}
public void setSal(float sal){
this.sal = sal;
}
public String getJob(){
return job;
}
public void setJob(String job){
this.job = job;
}
}
2.DatabaseConnection.java 连接数据库操作
package org.dbc;
import java.sql.*;
public class DatabaseConnection{
private Connection con = null;
private static final String DRIVER = "com.mysql.jdbc.Driver";
private static final String USER = "root";
private static final String URL = "jdbc:mysql://localhost:3306/mldn";
private static final String PASS = "12345";
public DatabaseConnection()throws Exception{
Class.forName(DRIVER);
con = DriverManager.getConnection(URL,USER,PASS);
}
public Connection getConnection()throws Exception{
return con;
}
public void close()throws Exception{
if(con!=null){
con.close();
}
}
}
3.IEmpDAO.java dao接口
package org.dao;
import java.util.List;
import org.vo.*;
public interface IEmpDAO{
public boolean doCreate(Emp emp)throws Exception;
public List<Emp> findAll()throws Exception;
public Emp findById(int empno)throws Exception;
}
4.EmpDAOImpl.java 接口的实现类
package org.dao.impl;
import org.dao.*;
import java.sql.*;
import org.vo.*;
import java.util.*;
public class EmpDAOImpl implements IEmpDAO{
private Connection con;
private PreparedStatement stat = null;
public EmpDAOImpl(Connection con){
this.con = con;
}
public boolean doCreate(Emp emp)throws Exception{
String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)";
stat = con.prepareStatement(sql);
stat.setInt(1,emp.getEmpno());
stat.setString(2,emp.getEname());
stat.setString(3,emp.getJob());
stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime()));
stat.setFloat(5,emp.getSal());
int update = stat.executeUpdate();
if(update>0){
return true;
}
else{
return false;
}
}
public List<Emp> findAll()throws Exception{
String sql = "SELECT empno,ename,job,hiredate,sal FROM emp";
stat = con.prepareStatement(sql);
ResultSet rs = stat.executeQuery();
Emp emp = null;
List<Emp> list = new ArrayList<Emp>();
while(rs.next()){
int empno = rs.getInt(1);
String ename = rs.getString(2);
String job = rs.getString(3);
float sal = rs.getFloat(5);
emp = new Emp();
emp.setEmpno(empno);
emp.setEname(ename);
emp.setJob(job);
emp.setHireDate(rs.getDate(4));
emp.setSal(sal);
list.add(emp);
}
return list;
}
public Emp findById(int empno)throws Exception{
String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?";
stat = con.prepareStatement(sql);
stat.setInt(1,empno);
ResultSet rs = stat.executeQuery();
Emp emp = null;
if(rs.next()){
String ename = rs.getString(2);
String job = rs.getString(3);
float sal = rs.getFloat(5);
emp = new Emp();
emp.setEmpno(empno);
emp.setEname(ename);
emp.setJob(job);
emp.setHireDate(rs.getDate(4));
emp.setSal(sal);
}
return emp;
}
}
5.EmpDAOProxy.java 数据库开关
package org.dao.impl;
import org.dao.*;
import java.sql.*;
import org.vo.*;
import java.util.*;
import org.dbc.*;
public class EmpDAOProxy implements IEmpDAO{
private DatabaseConnection dbc;
private IEmpDAO dao = null;
public EmpDAOProxy()throws Exception{
dbc = new DatabaseConnection();
dao = new EmpDAOImpl(dbc.getConnection());
}
public boolean doCreate(Emp emp)throws Exception{
boolean flag = false;
if(dao.findById(emp.getEmpno())==null){
flag = dao.doCreate(emp);
}
dbc.close();
return flag;
}
public List<Emp> findAll()throws Exception{
List<Emp>list = dao.findAll();
dbc.close();
return list;
}
public Emp findById(int empno)throws Exception{
Emp emp = dao.findById(empno);
dbc.close();
return emp;
}
}
6.DAOFactory.java 工厂类
package org.dao.factory;
import org.dao.*;
import java.sql.*;
import org.vo.*;
import java.util.*;
import org.dbc.*;
import org.dao.impl.*;
public class DAOFactory{
public static IEmpDAO getInstance(){
IEmpDAO dao = null;
try{
dao = new EmpDAOProxy();
}
catch(Exception e){
e.printStackTrace();
}
return dao;
}
}
7.TestDAO.java
通过DAO设计模式,可以在JSP中屏蔽了数据库连接的操作,达到JSP只负责显示的效果。
JavaBean中DAO设计模式简介的更多相关文章
- JavaBean中DAO设计模式介绍(转)
一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...
- JavaBean中DAO设计模式介绍
一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是client,简单的来说就是浏览器. 2.显示层:JSP/ ...
- JavaBean在DAO设计模式简介
一.信息系统开发框架 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层是client,简单的来说就是浏览器. 2.显示层:JSP/Se ...
- Java Web开发中MVC设计模式简介
一.有关Java Web与MVC设计模式 学习过基本Java Web开发的人都已经了解了如何编写基本的Servlet,如何编写jsp及如何更新浏览器中显示的内容.但是我们之前自己编写的应用一般存在无条 ...
- DAO设计模式
DAO设计模式 DAO设计模式简介: DAO设计模式可以减少代码量,增强程序的可移植性,提高代码的可读性. DAO(数据库操作对象)设计模式是 JavaEE 数据层的操作.主要由五部分组成: 1.数据 ...
- 一、DAO设计模式 二、DAO设计模式的优化 三、JDBC中的事务,连接池的使用
一.DAO设计模式概述###<1>概念 DAO,Data Access Object ,用于访问数据库的对象. 位于业务逻辑和数据持久化层之间,实现对数据持久化层的访问 ...
- JavaWeb技术(二):DAO设计模式
1. DAO全称:Data Access Object , 数据访问对象.使用DAO设计模式来封装数据持久化层的所有操作(CRUD),使得数据访问逻辑和业务逻辑分离,实现解耦的目的. 2. 典型的DA ...
- MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户
1. DAO简介 DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解 DAO设计模式包括5个重要的部分,分别为数据 ...
随机推荐
- 大数据学习--day07(冒泡排序、Arrays工具类、方法可变参数)
冒泡排序.Arrays工具类.方法可变参数 冒泡排序之前写过,略 Arrays工具类 二分法查询 public static int binarySearch(int[] a,int key) 头信息 ...
- Linux-3.5-Exynos4412驱动分层分离
linux-3.5/Documentation/driver-model/bus.txt 先写一个简单的例子,是为了给学习platform做准备. dev.h #ifndef JASON_DEV_H_ ...
- Java语法糖 : try-with-resources
先了解几个背景知识 什么是语法糖 语法糖是在语言中增加的某种语法,在不影响功能的情况下为程序员提供更方便的使用方式. 什么是资源 使用之后需要释放或者回收的都可以称为资源,比如JDBC的connect ...
- redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect time out
redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect ti ...
- 自定义view实现圆角图片
前两天想实现一个圆角图片的效果,通过网络搜索后找到一些答案.这里自己再记录一下,加深一下自己的认识和知识理解. 实现圆角图片的思路是自定义一个ImageView,然后通过Ondraw()重绘的功能,将 ...
- 剑指offer题目系列三(链表相关题目)
本篇延续上一篇剑指offer题目系列二,介绍<剑指offer>第二版中的四个题目:O(1)时间内删除链表结点.链表中倒数第k个结点.反转链表.合并两个排序的链表.同样,这些题目并非严格按照 ...
- JDBC与Java数据库编程基础
一.JDBC 概述 1.什么是JDBC 称为Java数据库连接,它是一种用于数据库访问的应用程序API,由一组用Java语言编写的类和接口组成,有了JDBC就可以用同一的语法对多种关系数据库进行访问, ...
- python中通过datetime获取UTC时间ISO格式
一个热点统计需求,需要限定一个时间范围,计算出该范围内的热点事件,相关数据则以UTC标准时间的ISO时间格式存在mongodb中,和服务器设置的时区UTC+8并不一致. 为了解决这个问题,直觉反应是在 ...
- 北京Uber优步司机奖励政策(2月18日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- Java String源码解析
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { ...