JDBC-使用Properties来加载连接池
JDBC-使用Properties来加载连接池
1.为什么需要使用Properties来加载文件?
-
JDBC中除了CURD 中具体的操作以外,加载的操作几乎一致
-
为了方便操作,也是为了让连接池在加载的时候方便修改-只需要修改配置文件中的信息即可 实现了高内聚的效果
2.使用Properties的主要步骤
-
为了实现只有一个连接池的效果可以参考单例设计模式进行编写
-
本次选用静态代码块(优先与类加载的特性)来实现
主要步骤如下
-
导入两个需要用到的连接池和JDBC的jar包
-
创建Properties文件 并且设置初始化所需的基本信息
-
在静态代码块中利用反射加载Properties文件
PROPERTIES.load(JDBCUtils.class.getResourceAsStream("/db.properties"))
一般都是通过获取自己这个类的class对象 所以默认的文件地址是自己包下 如果要获取到根(src)下的文件需要在路径上进行注释也就是在最前面写上/ 默认是相对路径 需要返回到项目的根目录
-
使用DruidDataSourceFactory提供的createDataSource方法创建连接池
需要传入Properties对象DruidDataSourceFactory.createDataSource(PROPERTIES) -
创建一个静态方法返回DataSource对象 以满足单例
注意点
-
无法使用事务
原因:每次获取到的连接无法确保是同一个连接
解决方法:
使用ThreadLocal 特性:在每个线程中每次连接时都是使用同一个连接
ThreadLocal中的set和get方法来完成-->在返回DataSource对象时判断ThreadLocal中是否有数据
-->ThreadLocal中有数据就获取ThreadLocal中的数据
-->ThreadLocal中没有就需要给ThreadLocal中设置数据需要在关闭Connection时同时调用remove方法移除保存的信息防止内存溢出
-->其他线程不能处理本线程的ThreadLocal中的数据

浙公网安备 33010602011771号