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 {

</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)"> 使用静态代码块处理
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)">// 创建一个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);}
    }

目录结构