数据库连接池
数据库连接池概念
获取连接对象是向系统底层申请资源。耗时。
数据库连接池实际上是存放数据库连接的容器(集合)。
当系统初始化好后,容器被创建,容器会申请一些数据库连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完后,会将连接对象归还给容器。
好处
- 高效
- 节约资源
数据库连接池的实现
标准接口:DataSource Javax.sql包下的
一般我们不去实现它,而是由数据库厂商实现的
- C3P0:数据库连接池技术(老)
- Druid:(德鲁伊)数据库连接池实现技术,由阿里巴巴提供
方法
- 获取连接:getConnection().
- 归还连接:conn.close().增强了close,如果连接对象conn是从连接池中获取的,那么调用conn.close()就不会关闭连接了,而是归还连接。
C3P0
步骤:
- 导入jar包
c3p0-0.9.5.5.jar
mchange-commons-java-0.2.19.jar
不能忘记导入数据库驱动jar包mysql-connector-java-8.0.26.jar - 定义配置文件:
名称:c3p0.properties 或者 c3p0-config.xml
路径:直接将文件放在src目录下即可 - 创建核心对象 :数据库连接池对象 ComboPooledDataSource
- 获取连接:getConnection()
Druid(要先打开mysql)
- 导入jar包 druid-1.1.9.jar
- 定义配置文件
是properties形式的
可以叫任意名称,可以放在任意目录下(所以要手动加载) - 获取数据库连接池对象(通过工厂来获取) DruidDataSourceFactory createDataSource();
- 获取连接 getConnection()
- 要打开mysql
实例
package Druid;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
public class Druid {
public static void main(String[] args) throws Exception {
//导入jar包
//定义配置文件
//加载配置文件
Properties properties=new Properties();
ClassLoader cl = Druid.class.getClassLoader();
InputStream is = cl.getResourceAsStream("Druid.properties")