JDBC 连接池

时间:2022-01-02 22:43:19

数据库连接池(connection pool)

JDBC数据库连接池的必要性

  在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:  

    在主程序(如servlet、beans)中建立数据库连接。
    进行sql操作
    断开数据库连接。

  这种模式开发,存在的问题:

    数据库的连接资源并没有得到很好的重复利用. 对于每一次数据库连接,使用完后都得断开。

    这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。

数据库连接池

  数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。

  数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

数据库连接池的工作原理

  aaarticlea/png;base64,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" alt="" width="601" height="239" />

数据库连接池技术的优点

  资源重用;  更快的系统反应速度;  新的资源分配手段;  统一的连接管理,避免数据库连接泄露.

两种开源的数据库连接池

JDBC 的数据库连接池使用 javax.sql.DataSource 来表示,DataSource 只是一个接口,该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现,也有一些开源组织提供实现:
  DBCP 数据库连接池
  C3P0 数据库连接池

DataSource 通常被称为数据源,它包含连接池和连接池管理两个部分,习惯上也经常把 DataSource 称为连接池

DBCP 数据源

Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。

使用 DBCP 数据库连接池
     * 1. 加入 jar 包(2 个jar 包). Commons-dbcp.jar:连接池的实现;  Commons-pool.jar:连接池实现的依赖库
     * 2. 创建数据库连接池
     * 3. 为数据源实例指定必须的属性
     * 4. 从数据源中获取数据库连接

	public void testDBCP() throws SQLException{
final BasicDataSource dataSource = new BasicDataSource(); //2. 为数据源实例指定必须的属性
dataSource.setUsername("root");
dataSource.setPassword("1230");
dataSource.setUrl("jdbc:mysql:///atguigu");
dataSource.setDriverClassName("com.mysql.jdbc.Driver"); //3. 指定数据源的一些可选的属性.
//1). 指定数据库连接池中初始化连接数的个数
dataSource.setInitialSize(5); //2). 指定最大的连接数: 同一时刻可以同时向数据库申请的连接数
dataSource.setMaxActive(5); //3). 指定小连接数: 在数据库连接池中保存的最少的空闲连接的数量
dataSource.setMinIdle(2); //4).等待数据库连接池分配连接的最长时间. 单位为毫秒. 超出该时间将抛出异常.
dataSource.setMaxWait(1000 * 5); //4. 从数据源中获取数据库连接
Connection connection = dataSource.getConnection();
System.out.println(connection.getClass());
}
	/**
* 1. 加载 dbcp 的 properties 配置文件: 配置文件中的键需要来自 BasicDataSource
* 的属性.
* 2. 调用 BasicDataSourceFactory 的 createDataSource 方法创建 DataSource
* 实例
* 3. 从 DataSource 实例中获取数据库连接.
*/
@Test
public void testDBCPWithDataSourceFactory() throws Exception{
Properties properties = new Properties();
InputStream inStream = JDBCTest.class.getClassLoader()
.getResourceAsStream("dbcp.properties");
properties.load(inStream); DataSource dataSource =
BasicDataSourceFactory.createDataSource(properties); System.out.println(dataSource.getConnection());
}

dbcp.properties

username=root
password=1230
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///atguigu initialSize=10
maxActive=50
minIdle=5
maxWait=5000

当数据库访问结束后,程序还是像以前一样关闭数据库连接:conn.close(); 但上面的代码并没有关闭数据库的物理连接,它仅仅把数据库连接释放,归还给了数据库连接池。

C3P0 数据源

	@Test
public void testC3P0() throws Exception{
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass( "com.mysql.jdbc.Driver" ); //loads the jdbc driver
cpds.setJdbcUrl( "jdbc:mysql:///atguigu" );
cpds.setUser("root");
cpds.setPassword("1230"); System.out.println(cpds.getConnection());
}
	/**
* 1. 创建 c3p0-config.xml 文件,
* 参考帮助文档中 Appendix B: Configuation Files 的内容
* 2. 创建 ComboPooledDataSource 实例;
* DataSource dataSource =
* new ComboPooledDataSource("helloc3p0");
* 3. 从 DataSource 实例中获取数据库连接.
*/
@Test
public void testC3poWithConfigFile() throws Exception{
DataSource dataSource =
new ComboPooledDataSource("helloc3p0");
System.out.println(dataSource.getConnection()); ComboPooledDataSource comboPooledDataSource =
(ComboPooledDataSource) dataSource;
System.out.println(comboPooledDataSource.getMaxStatements());
}

c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="helloc3p0"> <!-- 指定连接数据源的基本属性 -->
<property name="user">root</property>
<property name="password">1230</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///atguigu</property> <!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property> <!-- C3P0 数据库连接池可以维护的 Statement 的个数 -->
<property name="maxStatements">20</property>
<!-- 每个连接同时可以使用的 Statement 对象的个数 -->
<property name="maxStatementsPerConnection">5</property> </named-config>
</c3p0-config>