数据库连接池
1、什么是连接池
常量池/线程池/连接池
池:指内存中的一片空间(容器,比如数组、集合)
连接池:就是将连接存放在容器中,供整个程序共享,可以实现连接 的复用,减少连接创建和关闭的次数,从而提高程序执行的效率。
可以在程序一启动时,就创建一批连接放在一个连接池中(容器), 当用户需要连接时,就从连接池中获取一个连接对象,用完连接后,不要 关闭,而是将连接再还回连接池中,这样一来,用来用去都是池中的这一 批连接,实现了连接的复用,减少了连接创建和关闭的次数,从而提高了 程序执行的效率。
2、使用C3P0连接池
所有的连接池都要实现一个接口——DataSource(数据源),因此连接 池也被叫做数据源。
1、导入开发包
2、创建数据库连接池(对象)
1 ComboPooledDataSource cpds = new ComboPooledDataSource();
3、设置连接数据库的基本信息
将连接参数提取到properties文件中或将连接参数提取到xml文件中
一、将连接参数提取到properties文件中
文件必须放在src(源码根目录)目录下
文件名必须叫做 c3p0.properties
在类目录下(开发时可以放在src或者类似的源码目录下),添加一个 c3p0.properties文件,配置内容如下:
1 c3p0.driverClass=com.mysql.cj.jdbc.Driver 2 c3p0.jdbcUrl=jdbc:mysql:///jt_db?characterEncoding=utf8&serverTimezone=Asia/Shanghai 3 c3p0.user=root 4 c3p0.password=root
这种方式由于是c3p0到指定的位置下寻找指定名称的properties文件, 所以文件的位置必须是放在src或其他源码根目录下,文件名必须是 c3p0.properties。
二、:将连接参数提取到xml文件中
文件必须放在src(源码根目录)目录下
文件名必须叫做 c3p0-config.xml
在类目录下(开发时可以放在src或者类似的源码目录下),添加一个 c3p0-config.xml文件,配置内容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <c3p0-config> 3 <default-config> 4 <property name="driverClass">com.mysql.cj.jdbc.Driver</property> 5 <property name="jdbcUrl">jdbc:mysql:///jt_db? characterEncoding=utf8&serverTimezone=Asia/Shanghai</property> 6 <property name="user">root</property> 7 <property name="password">root</property> 8 </default-config> 9 </c3p0-config>
这种方式由于是c3p0到指定的位置下寻找指定名称的xml文件,所以文 件的位置必须是放在src或其他源码根目录下,文件名必须是c3p0config.xml
4、从连接池中获取一个连接对象并进行使用
1 Connection conn = pool.getConnection();
5、用完连接后将连接还回连接池中
1 conn.close() /* 如果是自己创建的连接对象,这个连接对象没有经过任何的改动,调用 * conn.close方法,是将连接对象关闭 * 如果是从连接池中获取的连接对象,该连接对象在返回时就已经被连接池 * 改造了,将连接对象的close方法改为了还连接到连接池中 */