DAO模式

DAO模式就是Data Access Objects(数据存取对象),位于业务逻辑和持久化数据之间,实现对持久化数据的访问。

持久化是将程序中数据在瞬时状态和持久状态间转换的机制。JDBC是一种持久化机制,将程序直接保存成文本文件也是持久化机制的一种实现。

DAO模式提供了访问关系型数据库系统所需的操作接口,将数据访问和业务逻辑分离,对上层提供面向对象的数据访问接口。

DAO模式主要由DAO接口,DAO实现类,实体类组成。基于代码复用,通常创建一个数据库连接和关闭工具类。

Properties类

  1. Java中配置文件常为properties文件,格式为文本文件,文件内容格式是“键=值”格式,注释信息用“#”表示。
  2. Java提供了Properties类来读取配置文件
  3. 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模式有,,

  1. Dao接口

  2. 实体类

  3. Dao实现类

  4. 数据连接和关闭类

具体操作时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();
			}
		}
	}
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值