DBCP连接池简介
简介:
DBCP是 apache 上的一个Java连接池项目
使用方法
-
导入依赖
-
调用方法
导入依赖:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.8.0</version>
</dependency>
调用方法:
package JDBCUtilsNo1;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.testng.annotations.Test;
import javax.sql.DataSource;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
/**
* 测试DBCP连接池方法的使用
* @since JDK 1.8
* @date 2021/10/19
* @author Lucifer
*/
public class DBCPTest {
//测试DBCP连接池的方法
//方式一:硬编码方式进行数据库连接
@Test
public void testGetConnection() {
//使用sun公司定义的接口Datasource
//创建dbcp的数据库连接池
BasicDataSource source = new BasicDataSource();
//设置基本信息
source.setDriverClassName("com.mysql.jdbc.Driver");
source.setUrl("jdbc:mysql:///test");
source.setUsername("junkingboy");
source.setPassword("junkingboy");
//设置其他涉及数据库连接池管理的相关属性
/*初始化连接数10个*/
source.setInitialSize(10);
}
//方式二:使用配置文件进行数据库连接
/*
由于BasicDataSource不直接提供构造方法,所以要通过BasicDataSourceFactory工厂类创建对象引用
配置文件的信息通过流的方式进行读取,要创建Properties对象引用
由于只需要创建一个数据库连接池,所以在构造的时候只需要执行一次即可。
使用静态代码块进行构造。静态代码块随着类的加载而加载。只执行一次
*/
@Test
public void testGetConnection1() throws Exception {
Connection conn = source.getConnection();
System.out.println(conn);
}
private static DataSource source;
static
{
try {
Properties pros = new Properties();
//使用类加载器获取配置文件
/*方式一*/
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("DBCP.properties");
//加载流
pros.load(is);
source = BasicDataSourceFactory.createDataSource(pros);
}catch (Exception e) {
e.printStackTrace();
}
}
}
dbcp
连接池常用基本配置属性
-
initialSize
:连接池启动时创建的初始化连接数量(默认值为0) -
maxActive
:连接池中可同时连接的最大的连接数(默认值为8) -
maxIdle
:连接池中最大的空闲的连接数,负数表示不设置 -
minIdle
:连接池中最小的空闲的连接数 -
maxWait
:最大等待时间,当无连接可用时连接池等待连接释放的最大时间,超过时间会抛出异常 -
poolPreparedStatements
:开启池的prepared(默认是false,未调整) -
maxOpenPreparedStatements
:开启池的prepared后的同时最大连接数(默认无上限) -
minEvictableIdleTimeMillis
:连接池中连接,在时间段内一直空闲,被逐出连接池的时间 -
removeAbandonedTimeout
:超过时间限制,回收没有用(废弃)的连接(默认300s) -
removeAbandoned
:超过removeAbandonedTimeout
时间后,是否进行没用(废弃)连接的回收(默认是false
)