DAO模式与单例模式

本文详细介绍了DAO模式,数据存取对象在业务逻辑和数据库之间的桥梁,隔离了数据访问代码和业务逻辑,包括DAO接口、实现类和实体类等组件。接着讨论了配置文件的使用,通过属性文件存储数据库连接信息,利用ConfigManager工具类实现读取。最后讲解了单例模式,确保类在系统运行期间只有一个实例,通过懒汉和饿汉方式实现。
摘要由CSDN通过智能技术生成

DAO模式与单例模式

1.DAO模式

  1. 概念:
    Data Access Object(数据存取对象) ,位于业务逻辑和持久化数据之间,实现对持久化数据的访问
  2. 作用:
    DAO起着转换器的作用,将数据在实体类和数据库记录之间进行转换
    在这里插入图片描述
  3. 优势
    隔离了数据访问代码和业务逻辑代码
    隔离了不同数据库实现
  4. DAO模式的组成
  • DAO接口
    规定要实现的方法
  • DAO实现类
    具体的要操作数据库的方法
  • 实体类
    数据库的表格的每一列作为实体类的私有化属性,属性类型与列属性一致;写出setter,getter方法
  • 数据库连接和关闭工具类
    调用DAO实现类中的方法实现数据库的操作,将需要的数据存储在实体类中

2.配置文件

  1. 概念:
    也叫属性文件,以 .properties结尾的文件,以键值对的形式存储数据;
    数据库发生改变时,要重新修改代码,重新编译和部署;将数据信息写在配置文件中,让程序通过读取配置文件来获取这些信息
  2. 完成配置文件的步骤
  • 步骤一:新建文件,database.properties,写入以下内容:
driver =com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.112.100:3306/test
user=root
pwd=ok
  • 步骤二:新建工具类 ConfigManager。读取数据库属性文件,获取数据库连接信息
public class ConfigManager{
	private static ConfigManager cm;
	private Proerties pro;
	//重写构造方法
	private ConfigManager{
		InputStream is = ConfigManager.class.getClassLoader().getResourceAsStream("database.properties");	//形参为配置文件地址
		pro.load(is);
		is,close();
	}
	//提供一个唯一的Configmanager对象
	public sychonized static ConfigManager getInstance(){
		if(cm==null){
			cm = new ConfigManager();
		}
		return cm;
	}
	//根据属性文件中的键值获得对应的值
	public static String getValue(String key){
   		return pro.getProperty(key);
	}
}
  • 步骤三:调用
ConfigManager.getInstance().getValue(key);

3.单例模式

  1. 概念:系统运行期间,有且仅有一个实例
  • 一个类只有一个实例——最基本的要求
    • 只提供私有构造器
  • 它必须自行创建这个实例
    • 定义了静态的该类私有对象
  • 它必须自行向整个系统提供这个实例
    • 提供一个静态的公有方法,返回创建或者获取本身的静态私有对象
  1. 懒汉方式:在类加载时不创建实例,采用延迟加载的方式,在运行调用时创建实例
  • 提前新建一个静态的代码块,代码块内新建new对象
static Properties pro =new Properties();
  • getValue()直接获取值
public static String getValue(String key){
    return pro.getProperty(key);
}
  1. 饿汉方式:在类加载的时候,就完成初始化
    上面配置文件中用的就是饿汉模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值