连接池的概念
1)数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。
2)数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。
3)数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数来设定的。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最大数据库连接数量限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。
连接的使用(c3p0l连接池)首先添加c3p0-0.9.1.2.jar
第一种使用方式:
package com.alex.c3p0;
import java.sql.Connection;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Testc3p0DataSource {
@Test
public void testC3P0_1() throws Exception{
//1.创建连接池对象
ComboPooledDataSource cpds = new ComboPooledDataSource();
//2.设置连接池的连接参数
cpds.setDriverClass("com.mysql.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql:///girls");
cpds.setUser("root");
cpds.setPassword("root");
//3.设置连接池的配置参数
cpds.setInitialPoolSize(5);//设置连接池的初始连接数
cpds.setMinPoolSize(5);//设置池子的最小连接数
cpds.setMaxPoolSize(20);//设置池子最大连接数
cpds.setAcquireIncrement(5);//设置池子每次访问数据库服务器申请的连接数
//4.获取可用连接对象
Connection connection = cpds.getConnection();
//5.使用连接
System.out.println(connection);
//6.关闭连接,仅仅是将连接对象放回池中,并没有断开和数据库服务器的连接
connection.close();
}
}
第二种使用方式:
(1)创建一个c3p0-config.xml文件
<c3p0-config>
<named-config name="c3p0config">
<!-- 驱动类 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- url -->
<property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/test</property>
<!-- 用户名 -->
<property name="user">root</property>
<!-- 密码 -->
<property name="password">root</property>
<!-- 每次增长的连接数 -->
<property name="acquireIncrement">5</property>
<!-- 池子的初始连接数 -->
<property name="initialPoolSize">10</property>
<!-- 池子的最小连接数 -->
<property name="minPoolSize">5</property>
<!-- 池子的最大连接数 -->
<property name="maxPoolSize">10</property>
<!-- 池子的最大命令对象个数 -->
<property name="maxStatements">5</property>
<!-- 每个连接对象的最多命令对象个数 -->
<property name="maxStatementsPerConnection">2</property>
</named-config>
</c3p0-config>
(2)简历Java类
package com.alex.c3p0;
import java.sql.Connection;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Testc3p0DataSource {
@Test
public void testC3P0_2() throws Exception {
// 1.创建连接池对象 c3p0config 和 c3p0-config.xml 中 named-config 属性name 值一样
//c3p0-config.xml 文件名 不能改
//c3p0-config.xml 放到 src 下面
ComboPooledDataSource cpds = new ComboPooledDataSource("c3p0config");
// 2.获取连接
Connection connection = cpds.getConnection();
System.out.println(connection);
// 3.关闭连接
connection.close();
}
}