DAO模式与数据库连接池

本文介绍了DAO设计模式,用于降低业务逻辑与数据库访问的耦合性,详细讲解了DAO模式的组成部分,并展示了如何使用DAO实现emp表的操作。接着讨论了数据库连接池的重要性,对比分析了DBCP、C3P0和Druid连接池的特性,以及它们的配置和使用方法。
摘要由CSDN通过智能技术生成

DAO设计模式   

DAO(Database Access Object 数据库访问对象)

  为了降低耦合性,提出了DAO封装数据库操作的设计模式。
  它可以实现业务逻辑与数据库访问相分离。相对来说,数据库是比较稳定的,其中DAO组件依赖于数据库系统,提供数据库访问的接口,隔离了不同的数据库实现。

DAO模式的组成部分
  1 DAO接口(主要包 添加 修改 查询 删除方法)
  2 DAO实现类
  3 实体类 (domain(领域)、beans、entity、pojo、model)
    PO (VO)(Persistent Object, Value Object)
    VO (View Object)
    DTO (Data Transfer Object)

​ --作用:用在数据访问代码和业务逻辑代码之间通过实体类来传输数据

​ --实体类特征:
  属性一般使用private修饰
  提供public修饰的getter/setter方法
  实体类提供无参构造方法,根据业务提供有参构造
  实现java.io.Serializable接口,支持序列化机制

​ 4 数据库连接和关闭工具类

设计的包名 :

  domain 存放实体类
  utils 存放工具类
  dao 存放接口
  dao.impl 存放实现类

  使用DAO设计模式实现emp表的查询、添加、删除、修改

例:

Employee类

/**
 * 员工类
 * 实体类
 *
 */
public class Employee implements Serializable {
   
	/**
	 * 
	 */
	private static final long serialVersionUID = 373910607014836778L;
	private int empno;
	private String ename;
	private String job;
	private int mgr;
	private Date hiredate;
	private double sal;
	private double comm;
	private int deptno;
	
	public Employee() {
   
		// TODO Auto-generated constructor stub
	}

	public Employee(int empno, String ename, String job, int mgr, Date hiredate, double sal, double comm, int deptno) {
   
		super();
		this.empno = empno;
		this.ename = ename;
		this.job = job;
		this.mgr = mgr;
		this.hiredate = hiredate;
		this.sal = sal;
		this.comm = comm;
		this.deptno = deptno;
	}

	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 String getJob() {
   
		return job;
	}

	public void setJob(String job) {
   
		this.job = job;
	}

	public int getMgr() {
   
		return mgr;
	}

	public void setMgr(int mgr) {
   
		this.mgr = mgr;
	}

	public Date getHiredate() {
   
		return hiredate;
	}

	public void setHiredate(Date hiredate) {
   
		this.hiredate = hiredate;
	}

	public double getSal() {
   
		return sal;
	}

	public void setSal(double sal) {
   
		this.sal = sal;
	}

	public double getComm() {
   
		return comm;
	}

	public void setComm(double comm) {
   
		this.comm = comm;
	}

	public int getDeptno() {
   
		return deptno;
	}

	public void setDeptno(int deptno) {
   
		this.deptno = deptno;
	}

	@Override
	public String toString() {
   
		return "Employee [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", hiredate="
				+ hiredate + ", sal=" + sal + ", comm=" + comm + ", deptno=" + deptno + "]";
	}
	
}

接口:

public interface EmployeeDao {
   
	
	 //1查询
	 List<Employee> findAll();
	 //2更新
	 void 
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值