DAO模式就是Data Access Objects(数据存取对象),位于业务逻辑和持久化数据之间,实现对持久化数据的访问。
持久化是将程序中数据在瞬时状态和持久状态间转换的机制。JDBC是一种持久化机制,将程序直接保存成文本文件也是持久化机制的一种实现。
DAO模式提供了访问关系型数据库系统所需的操作接口,将数据访问和业务逻辑分离,对上层提供面向对象的数据访问接口。
DAO模式主要由DAO接口,DAO实现类,实体类组成。基于代码复用,通常创建一个数据库连接和关闭工具类。
Properties类
- Java中配置文件常为properties文件,格式为文本文件,文件内容格式是
“键=值”
格式,注释信息用“#”表示。 - Java提供了Properties类来读取配置文件
- Properties类位于Java.util包中,继承自Hashtable类
常用方法
方法 | 描述 |
---|---|
String getProperty(String key) | 用key在属性列表里搜索值 |
Object setProperty(String key,String value) | 调用hashtable的put方法设置键值对 |
void load(InputStream inStream) | 从输入流中读取属性列表(键和元素对)。通过对制定文件装载获得所有键值对 |
void clear() | 清除所有装载地键值对,该方法由基类Hashtable提供 |
Properties pro=new Properties();
String configFile="database.properties"; //配置文件路径
//加载文件到输入流中
InputStream is=当前类.class.getClassLoader().getResourceAsStream(configFile);
try{
pro.Load(is); //读取列表
}catch(IOException e){
}
//用制定的键获取值
driver=pro.getProperties(“driver”);
关闭连接
本人学习总结了一些经验如下
标准的Dao模式有,,
-
Dao接口
-
实体类
-
Dao实现类
-
数据连接和关闭类
具体操作时Dao实现类继承数据连接和关闭类,实现Dao接口
配置信息由properties类加载
数据连接和关闭类一般是这样的
public class BaseDao {
private String url;
private String user;
private String password;
private String driver;
//加载配置文件里的信息
public void init(){
Properties pro=new Properties();
String configFile="database.properties";
InputStream is=BaseDao.class.getClassLoader().getResourceAsStream(configFile);
try {
pro.load(is);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driver=pro.getProperty("driver");
url=pro.getProperty("url");
user=pro.getProperty("user");
password=pro.getProperty("password");
}
//连接数据库
public Connection getConnection(){
Connection con=null;
try {
Class.forName(driver);
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
con=DriverManager.getConnection(url,user,password);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
//关闭连接
public void closeConnection(PreparedStatement ps,Connection con,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(con!=null){
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}