package com.dbcp;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
public class JDBC {
/**
*
* 将连接数据库的属性放在配置文件中,通过如下方法获取数据库连接
*1.加载dbcp的properties配置文件:配置文件中的键需要来自BasicDataSource的属性
*2.调用BasicDataSourceFactory的createDataSource方法创建DataSource实例
*3.从DataSource实例中获取数据库来连接
* @throws Exception
*/
@Test
public void testDBCPWithDataSourceFactory() throws Exception{
Properties properties = new Properties();
InputStream inStream = JDBC.class.getClassLoader()
.getResourceAsStream("dbcp.properties");
properties.load(inStream);
DataSource dataSource =
BasicDataSourceFactory.createDataSource(properties);
System.out.println(dataSource.getConnection());
BasicDataSource basicDataSource =
(BasicDataSource) dataSource;
System.out.println(basicDataSource.getMaxActive());
}
/**
* 使用DBCP数据库连接池
* 1.加入jar包(2个)commons-dbcp和commons-pool jar 包 ;
* 2.创建数据库连接池
* 3.为数据源实例指定必须的属性
* 4.从数据源中获取数据库连接
* @throws Exception
*/
@Test
public void testDBCP() throws Exception {
BasicDataSource dataSource = null;
// 1.创建DBCP数据源实例
dataSource = new BasicDataSource();
// 2.为数据源实例提供必须的属性
dataSource.setUsername("root");
dataSource.setPassword("mysql");
dataSource.setUrl("jdbc:mysql:///jdbc");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
// 3.指定数据源的一些可选的属性
// 1).指定数据库连接池中初始化连接数的个数
dataSource.setInitialSize(10);
// 2).指定最大的连接数:同一时刻可以向数据库申请的连接数
dataSource.setMaxActive(50);
// 3).指定最小连接数:在数据库连接池空闲状态下的连接数
dataSource.setMinIdle(5);
//4).等待数据库连接池分配连接的最长时间。单位为 毫秒,超出时间将抛出异常。
dataSource.setMaxWait(1000*5);
// 4.从数据源中获取数据库里连接
Connection connection = dataSource.getConnection();
System.out.println(connection);
}
}
配置文件:
dbcp.properties
username=root
password=mysql
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///jdbc
initialSize=10
maxActive=50
minIdle=5
maxWait=5000