猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

解决JDBC重复代码:

  1. 编写工具类:JDBCUtils
    编写获取连接方法
    编写释放资源方法

  2. 编写dao的父类:BaseDao

使用Properties文件作为数据库配置文件:

文件一般命名:XXX.properties

文件中的数据:key=value,key名自定义
猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

在程序中读取属性文件:

猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

类名.class.getClassLoader().getResourceAsStream(“文件名”);通过当前类的类加载器读取src下的文件

数据库连接池:

问题:

如果程序中没有使用数据库连接池,那么用户每次请求都需要向数据库获取连接,而数据库创建连接需要消耗大量资源,并且创建时间也比较长,那么如果项目访问量过大,这就会造成数据库资源的极大浪费,并且很大可能出现数据库服务器的内存溢出,死机。

解决办法:使用数据库连接池优化程序

直接连接数据库

猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

使用连接池
猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

连接池:在程序初始化后就创建一定数量的数据库连接在连接池中,在需要使用连接访问数据库时,从连接池中获取,当使用完后,该连接会返回池中,而不是关闭

数据库连接池是负责分配,管理,释放数据库连接,允许程序重复使用现有的数据库连接,而不是重新创建

编写原生数据库连接池:(了解)

1.首先需要使用javax.sql.DataSource接口

2.在连接池类中生成多个连接存入LinkedList中

3.实现getConnection方法,返回的是一个被代理对象
猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

在实际开发中都是使用开源连接池

目前主流:

Dbcp:没有回收空闲连接方法

C3p0:有自动回收空闲连接方法

Druid(阿里云公司开发)

使用c3p0开发步骤:

  1. 添加jar

猪猪的IT之路---Java成长之路(JDBC工具类+连接池)
jar包百度云链接:https://pan.baidu.com/s/1GBEN29y46MlsOLVcH4YpPw
提取码:fsdr

  1. 编写连接池配置文件,c3p0-config.xml
    第一种写法:
    猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

    第二种写法:
    猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

  2. 使用连接池
    猪猪的IT之路---Java成长之路(JDBC工具类+连接池)
    猪猪的IT之路---Java成长之路(JDBC工具类+连接池)

在连接池中使用conn.close()是将连接放回池中,不是关闭连接,底层是通过动态代理方式实现该功能