DBCP数据库连接池的使用
两个 dbcp 使用的架包:
commons-dbcp-1.4.jar 依赖于 commons-pool-1.5.5.jar
commons-pool-1.5.5.jar
DBCP 数据库连接池的两种实现方式
TestDBCP
package com.aff.connection; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; import org.junit.Test;//测试 DBCP 的数据库连接池技术
//DBCP 数据库连接池的两种实现方式
//BasicDataSource
public class TestDBCP {
// 方式一:
@Test
public void testGetConnection() throws SQLException {
// 创建 DBCP 数据库连接池
BasicDataSource source = new BasicDataSource();</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 设置基本信息</span> source.setDriverClassName("com.mysql.jdbc.Driver"<span style="color: rgba(0, 0, 0, 1)">); source.setUrl(</span>"jdbc:mysql://localhost:3306/test"<span style="color: rgba(0, 0, 0, 1)">); source.setUsername(</span>"root"<span style="color: rgba(0, 0, 0, 1)">); source.setPassword(</span>"123456"<span style="color: rgba(0, 0, 0, 1)">); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 其他设置数据库连接池管理的相关属性</span> source.setInitialSize(10<span style="color: rgba(0, 0, 0, 1)">); source.setMaxActive(</span>20<span style="color: rgba(0, 0, 0, 1)">); Connection conn </span>=<span style="color: rgba(0, 0, 0, 1)"> source.getConnection(); System.out.println(conn); } </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 方式二:推荐 使用配置文件</span>
@Test
public void testGetConnection2() throws Exception {Properties pros </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Properties(); </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取流的两种方式 </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp.properties");</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">方式 一</span> FileInputStream is = <span style="color: rgba(0, 0, 255, 1)">new</span> FileInputStream(<span style="color: rgba(0, 0, 255, 1)">new</span> File("src/dbcp.properties"));<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">方式 二</span>
pros.load(is);
// 创建了一个 DBCP 数据库连接池
DataSource source = BasicDataSourceFactory.createDataSource(pros);
Connection conn = source.getConnection();
System.out.println(conn);
}
}
DBCP 数据库连接池的配置文件
dbcp.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=123456
DBCP 数据库连接池获取数据库连接
JDBCUtilsDBCP
package com.aff.util; import java.io.File; import java.io.FileInputStream; import java.sql.Connection; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory;//使用 DBCP 数据库连接池获取数据库连接
public class JDBCUtilsDBCP {try { Properties pros = new Properties(); // 获取流的两种方式 // ClassLoader.getSystemClassLoader().getResourceAsStream("dbcp.properties"); FileInputStream is = new FileInputStream(new File("src/dbcp.properties")); pros.load(is);</span><span style="color: rgba(255, 0, 0, 1)">private static DataSource source; </span><span style="color: rgba(0, 0, 255, 1)">static</span> {<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(255, 0, 0, 1)"> 使用静态代码块处理
</span><span style="color: rgba(255, 0, 0, 1)">// 创建一个DBCP数据库连接池 source =</span><span style="color: rgba(0, 0, 0, 1)"><span style="color: rgba(255, 0, 0, 1)"> BasicDataSourceFactory.createDataSource(pros);</span> } </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception e) { e.printStackTrace(); } } </span><span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span> Connection getConnection() <span style="color: rgba(0, 0, 255, 1)">throws</span><span style="color: rgba(0, 0, 0, 1)"> Exception { Connection conn </span>=<span style="color: rgba(0, 0, 0, 1)"> source.getConnection(); </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> conn; }
}
测试 DBCP 数据库连接池获取的连接的使用
@Test public void testGetCustomerById() { Connection conn = null; try { conn = JDBCUtilsDBCP.getConnection(); Customer customer = dao.getCustomerById(conn, 20); System.out.println(customer); System.out.println("获取成功");} catch (Exception e) {e.printStackTrace(); } finally { JDBCUtils.closeResource(conn, null);} }
目录结构