面向接口设计——Dao模式
DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来。DAO在数据库与业务逻辑(Service)之间。
- 实体域,即操作的对象,例如我们操作的表是emp表,那么就需要先写一个employee类;
- DAO模式需要先提供一个DAO接口;
- 然后再提供一个DAO接口的实现类;
- 再编写一个DAO工厂,Service通过工厂来获取DAO实现。
DaoFactory.java
package com.qtu.dao;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
*
* dao工厂,用于获取
*
* @author Hu Shengkai
* @create 2019-08-27 21:04
*/
public class DaoFactory {
private static Properties props = null;
static {
try {
//读取配置文件
InputStream in = DaoFactory.class.getClassLoader().getResourceAsStream("dao.properties");
props = new Properties();
props.load(in);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 返回一个具体EmployeeDao的实现类对象
* @return
*/
public static IEmployeeDao getEmployeeDao(){
/**
* 给出一个配置文件,文件中给出UserDao接口的实现类名称!
* 我们这个方法,获取实现类的类名,通过反射完成创建对象!
*/
/*
* 得到dao实现类的名称
*/
String daoClassName = props.getProperty("com.qtu.dao.IEmployeeDao");
/*
* 通过反射来创建实现类的对象
*/
try {
Class<?> clazz = Class.forName(daoClassName);
return (IEmployeeDao) clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
dao.properties
com.qtu.dao.IEmployeeDao=com.qtu.dao.EmployeeDaoImpl
其中接口做key,要调用的实现类做Value
业务层中调用:
// 把具体的实现类的创建,隐藏到工厂中了!
//得到dao的实现类对象
IEmployeeDao dao = DaoFactory.getEmployeeDao();