DBCP和C3P0的简单使用

原理不说了,直接附上代码和注释来看一看常见的两种数据连接池怎么用吧。
DBCP
1. 导入两个必需的 jar 包

commons-dbcp2-2.2.0.jar

commons-pool2-2.5.0.jar

2. 编写数据连接池的 Java 代码(最简单的数据连接池的使用方法)
package com.dbc;

import org.apache.commons.dbcp2.BasicDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class DatabaseByDBCP {
private static final BasicDataSource dataSource;
static {
dataSource = new BasicDataSource();// 创建数据源对象
dataSource.setDriverClassName( "com.mysql.jdbc.Driver" );// 设置数据库连接的驱动
dataSource.setUrl( "jdbc:mysql://localhost:3306/onlinezhihu?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false" );// 设置连接的 url
dataSource.setUsername( "root" );// 设置数据库的用户名
dataSource.setPassword( "1" );// 设置数据库的密码
dataSource.setInitialSize( 5 );// 设置连接池的初始化连接数
dataSource.setMaxOpenPreparedStatements( 5 );
dataSource.setMinIdle( 2 );
}
public BasicDataSource getDataSource(){
return dataSource;
}
public Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}

3. 使用数据连接池(直接在 daoImpl 下的 java 文件直接使用)
    private Connection conn = null;// 数据库连接对象
    conn = new DatabaseByDBCP().getConnection();

C3P0
1. 导入两个必需的 jar 包

c3p0-0.9.2.1.jar

mchange-commons-java-0.2.3.4.jar

2. 编写数据连接池的 Java 代码(最简单的数据连接池的使用方法)
package com.dbc;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;

public class DatabaseByC3P0 {
private static ComboPooledDataSource dataSource ;
static {
dataSource = new ComboPooledDataSource( );// 创建连接池实例
try {
dataSource.setDriverClass( "com.mysql.jdbc.Driver" );// 设置数据库连接的驱动
dataSource.setJdbcUrl( "jdbc:mysql://localhost:3306/onlinezhihu?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useSSL=false" );// 设置连接的 url
dataSource.setUser( "root" );// 设置数据库的用户名
dataSource.setPassword( "1" );// 设置数据库的密码
dataSource.setMaxPoolSize( 40 );// 设置连接池的最大连接数
dataSource.setMinPoolSize( 2 );// 设置连接池的最小连接数
dataSource.setInitialPoolSize( 10 );// 设置连接池的初始连接数
dataSource.setMaxStatements( 180 );// 设置连接池缓存的 statement 的最大数
} catch (PropertyVetoException e) {
e.printStackTrace();
}

}
<span class="hljs-keyword">public</span> ComboPooledDataSource <span class="hljs-title function_">getDataSource</span><span class="hljs-params">()</span>{
    <span class="hljs-keyword">return</span> dataSource;
}
<span class="hljs-keyword">public</span> Connection <span class="hljs-title function_">getConnection</span><span class="hljs-params">()</span> <span class="hljs-keyword">throws</span> SQLException {
    <span class="hljs-keyword">return</span> dataSource.getConnection();
}

}

3. 使用数据连接池(直接在 daoImpl 下的 java 文件直接使用)
    private Connection conn = null;// 数据库连接对象
    conn = new DatabaseByC3P0().getConnection();