数据库连接池
概念:
一个容器,存放数据库连接的容器。
当系统初始化完成之后,容器被创建,容器中会申请一些连接对象,当用户来访问时,从容器中获取连接对象,当访问完成之后,会将简介对象归还给容器。
好处:
- 节约资源
- 提高效率
实现:
- 标准接口:DataSource。javax.sql包中的接口
Connection getConnection();
获取连接对象void close();
归还连接
- 接口的实现:一般我们不去实现它,有数据库厂商来实现
- C3P0连接池
- Druid连接池
C3P0连接池
使用步骤:
导入相关依赖:
- mysql-connector-java-x.x.xx.jar -----数据库连接驱动
- c3p0-x.x.xx.jar -----c3p0连接池jar包
- mchange-commons-java-x.x.xx.jar -----c3p0依赖辅助的包
定义配置文件
名称:c3p0.properties
或c3p0-config.xml
路径:直接放到资源目录下
创建连接池对象
-
创建连接池对象ComboPooledDataSource,包路径com.mchange.v2.c3p0.ComboPooledDataSource
ComboPooledDataSource dataSource = new ComboPooledDataSource();
-
通过连接池对象DataSource调用getConnection方法获取连接对象
Connection connection = dataSource.getConnection();
-
释放连接资源,将使用完毕的连接重新放入连接池中
connection.close();
代码示例:
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class C3P0Demo {
public static void main(String[] args) throws SQLException {
//创建连接池对象ComboPooledDataSource
ComboPooledDataSource dataSource = new ComboPooledDataSource();
//获取连接对象
Connection connection = dataSource.getConnection();
//使用连接资源
//释放资源
connection.close();
}
}
配置文件
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day25</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">10</property>
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/day25</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
Druid连接池
使用步骤
导入相关依赖
- mysql-connector-java-x.x.xx.jar
- druid-x.x.x.jar
定义配置文件
任意目录任意文件名的properties文件
建议:资源路径下的druid.properties
加载配置文件
Properties prop = new Properties();
prop.load(配置文件输入流对象);
通过工厂类获得连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(Properties prop)
代码示例
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.sql.Connection;
import java.util.Properties;
public class DruidDemo {
public static void main(String[] args) throws Exception {
//加载配置文件
Properties prop = new Properties();
prop.load(DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties"));
//就通过工厂类静态方法获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//通过连接池对象获取数据库连接对象
Connection connection = dataSource.getConnection();
//使用连接
//释放资源
connection.close();
}
}
配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/db3
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000