JDBC-使用Properties来加载连接池

JDBC-使用Properties来加载连接池

1.为什么需要使用Properties来加载文件?

  1. JDBC中除了CURD 中具体的操作以外,加载的操作几乎一致

  2. 为了方便操作,也是为了让连接池在加载的时候方便修改-只需要修改配置文件中的信息即可 实现了高内聚的效果

2.使用Properties的主要步骤

  • 为了实现只有一个连接池的效果可以参考单例设计模式进行编写

  • 本次选用静态代码块(优先与类加载的特性)来实现

主要步骤如下

  1. 导入两个需要用到的连接池和JDBC的jar包

  2. 创建Properties文件 并且设置初始化所需的基本信息

  3. 在静态代码块中利用反射加载Properties文件
    PROPERTIES.load(JDBCUtils.class.getResourceAsStream("/db.properties"))

一般都是通过获取自己这个类的class对象 所以默认的文件地址是自己包下 如果要获取到根(src)下的文件需要在路径上进行注释也就是在最前面写上/ 默认是相对路径 需要返回到项目的根目录

  1. 使用DruidDataSourceFactory提供的createDataSource方法创建连接池
    需要传入Properties对象DruidDataSourceFactory.createDataSource(PROPERTIES)

  2. 创建一个静态方法返回DataSource对象 以满足单例

注意点

  • 无法使用事务

    原因:每次获取到的连接无法确保是同一个连接

    解决方法:

    使用ThreadLocal 特性:在每个线程中每次连接时都是使用同一个连接

    ThreadLocal中的set和get方法来完成-->在返回DataSource对象时判断ThreadLocal中是否有数据
    -->ThreadLocal中有数据就获取ThreadLocal中的数据
    -->ThreadLocal中没有就需要给ThreadLocal中设置数据

    需要在关闭Connection时同时调用remove方法移除保存的信息防止内存溢出
    -->其他线程不能处理本线程的ThreadLocal中的数据

posted @ 2022-03-29 19:59  舟思水  阅读(123)  评论(0)    收藏  举报