JavaBean在DAO设计模式简介

一、信息系统开发框架

客户层-------显示层-------业务层---------数据层---------数据库

1.客户层:客户层是client,简单的来说就是浏览器。

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

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

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

package org.dao.test;
import org.dao.factory.*;
import org.vo.*;
import org.dao.*;
public class TestDAO{
	public static void main(String args[])throws Exception{
		Emp emp = null;
		for(int i=0;i<5;i++){
			emp = new Emp();
			emp.setEmpno(i);
			emp.setEname("xiazdong-"+i);
			emp.setJob("stu-"+i);
			emp.setHireDate(new java.util.Date());
			emp.setSal(500*i);
			DAOFactory.getInstance().doCreate(emp);
		}
	}
}

由DAO设计模式,能JSP屏蔽数据库连接的操作,到达JSP只负责显示结果。

时间: 2024-10-21 02:28:44

JavaBean在DAO设计模式简介的相关文章

JavaBean中DAO设计模式介绍

一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Servlet,用于给浏览器显示. 3.业务层:对于数据层的原子操作进行整合. 4.数据层:对于数据库进行的原子操作,增加.删除等: 二.DAO(Data Access Object)介绍 DAO应用在数据层那块,用于访问数据库,对数据库进行操作的类. 三.DAO设计模式的结构 DAO设计模式一般分为几个

DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据访问者)模式和 Active Domain Object(领域对象)模式.Data Accessor 模式实现了数据访问和业务逻辑的分离:Active Domain Object 模式实现了业务数据的对象化封装. 需要注意的是,DAO设计模式是Java EE中的设计模式,而非Ja

JavaWeb技术(二):DAO设计模式

1. DAO全称:Data Access Object , 数据访问对象.使用DAO设计模式来封装数据持久化层的所有操作(CRUD),使得数据访问逻辑和业务逻辑分离,实现解耦的目的. 2. 典型的DAO实现组件:DAO接口 + DAO接口的实现类 3. 事例代码 1)javabean组件:用于数据传输的对象 /** javabean数据传输对象 */ public class Customer { // 和数据库中的表是对应的 private int id; private String nam

DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户

1. DAO简介    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解    DAO设计模式包括5个重要的部分,分别为数据库连接类,VO类,DAO接口,DAO实现类以及DAO工厂类.   2-1 数据库连接类:    数据库连接类的主要功能就是连接数据库并获得连接对象,以及关闭数据库.通过数据库连接类可以大大地简化开发,在需要进行数据库连接时,只需要创建该类的实例,并调用其中的方法就可以获得数据库连接对象和关闭数据库而

MySQL数据库学习笔记(十一)----DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4059514.html 联系方式:[email protected] [正文] 一.DAO模式简介 DAO即Data Access Object,数据访问接口.数据访问:故名思义就是与数据库打交道.夹在业务逻辑与数据库资源中间. DAO模式实际上是两个模式的组合,即Data Accessor (数据

Java学习之DAO设计模式

DAO设计模式是一个javaEE里的设计模式,DAO是Data Access Object 数据访问接口. 一个典型的DAO实现有三个组件: 1.一个DAO接口 2.一个DAO接口的具体类: 3.数据传递对象(DTO)或者叫值对象(VO)或者叫领域模型(domain)[个人认为就是数据库表里对应的java对象类] 举个例子: 首先在数据库建一个表Person有四个字段id(pk),name,age,desc(描述): 然后建立domain 1 package com.gh.domain; 2 3

jsp DAO设计模式

DAO(Data Access Objects)设计模式是属于J2EE体系架构中的数据层的操作. 一.为什么要用DAO? 比较在JSP页面中使用JDBC来连接数据库,这样导致了JSP页面中包含了大量的HTML代码和JSP代码,将显示和功能代码混在一起,难以维护.并且在JSP页面中使用JDBC代码,必须导入相应的"java.sql.*"包.基于使得JSP页面专注于数据的表现的思想,我们只是希望JSP主要负责数据的显示,而不需要关注数据的来源和途径.同时在JSP进行JDBC操作,重复编码太

【设计模式】:Dao设计模式详解及一个简单的项目(AJAX+JSP+Servlet)

迫于课程结束,老师逼着让做课程设计,就简单花了一天的时间写了个使用dao设计模式的东西~ ~ ~顺带在这里讲解下dao设计模式 把写个这个东西的源代码放上来: http://download.csdn.net/detail/u010800530/8273915 先画一个图,这个图可能能够完整表达出dao设计模式的意思,但是可以在下边通过代码看出来: 一.完成登陆功能(未设计AJAX,等到完成显示列表的时候我们做AJAX): 首先,我们建立一个项目TestJSP 然后,我们写一个login.jsp

23种设计模式简介

创建型模式(Creational Pattern) 1. 抽象工厂模式(Abstract Factory Pattern) 介绍 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 2. 建造者模式(Builder Pattern) 介绍 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 3. 原型模式(Prototype Pattern) 介绍 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象. 4. 工厂方法模式(Factory M