创建DBCP数据源

package com.atguigu.jdbc;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
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 JDBCTest {
/**
* 工厂创建模式dbcp
* 1、加载dbcp的properties配置文件:配置文件中的键需要来自BasicDataSource类的属性
* 2、调用BasicDataSourceFactory类的createDataSource(properties)方法创建DataSource实例
* 3、从DataSource实例中获取数据库连接
* @throws Exception
*/
@Test
public void testDBCPWithDataSourceFactory() throws Exception{
Properties properties=new Properties();
InputStream inStream=JDBCTest.class.getClassLoader().getResourceAsStream("dbcp.properties");
properties.load(inStream);
final DataSource dataSource=BasicDataSourceFactory.createDataSource(properties);
Connection connection=dataSource.getConnection();
System.out.println(connection.getClass());
connection=dataSource.getConnection();
System.out.println(connection.getClass());
connection=dataSource.getConnection();
System.out.println(connection.getClass());
connection=dataSource.getConnection();
System.out.println(connection.getClass());
Connection connection2=dataSource.getConnection();
System.out.println(">"+connection2.getClass());
//新建一个线程
new Thread(){
public void run(){
Connection con;
try {
con = dataSource.getConnection();
System.out.println(con.getClass());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();

//3秒之后释放连接
Thread.sleep(3000);
connection2.close();
//BasicDataSource basicDataSource=(BasicDataSource)dataSource;
//System.out.println(basicDataSource.getMaxWait());
//System.out.println(basicDataSource.getMaxActive());

}
/**
* 使用DBCP数据库连接池
* 1、加入jar包(2个).commons-dbcp-1.4-bin.zip依赖commons-pool-1.5.5.jar架包
* 2、创建数据库连接池:
* 3、从数据源实例指定必须属性
* 4、从数据源中获取数据库连接
* @throws SQLException
*/
@Test
public void testDBCP() throws SQLException{
BasicDataSource dataSource=null;
//创建DBCP数据源实例:
dataSource=new BasicDataSource();
//2、为数据源实例指定必须的属性
dataSource.setUsername("root");
dataSource.setPassword("root");
dataSource.setUrl("jdbc:mysql://127.0.0.1:3306/atguigu");
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
//3、指定数据源的一些可选择的属性
//1)指定数据库连接池中初始化连接数的个数
dataSource.setInitialSize(10);
//2)指定最大连接数:同一时刻可以向数据库申请的连接数
dataSource.setMaxActive(50);
//3)最小连接数:在数据库连接池中保存的最少的空闲连接的数量,防止调用连接的话可以直接把连接给您
dataSource.setMinIdle(5);
//4)等待数据库连接池分配连接的最长毫秒数。下面为5秋超出该时间将抛出异常。
dataSource.setMaxWait(1000*5);
//3、从数据源中获取数据库连接
Connection connection=dataSource.getConnection();
System.out.println(connection.getClass());
}

posted @ 2016-02-21 09:58  苍狼哂啡  阅读(801)  评论(0编辑  收藏  举报