DBCP连接池的创建

实现连接池

使用两个Jar文件来实现:

文件是apache提供的 : dbcp.jar(连接池) pool.jar(连接池实现的依赖库)

1. 这个线程池会预读本地文件 , 进行数据库的连接配置:

需要在src根目录, 创建一个properties文件:

驱动地址

driverClassName=oracle.jdbc.OracleDriver
#连接地址
url=jdbc:oracle:thin:@localhost:1521
#帐号
username=system
#密码
password=123456

初始化的连接数量

initialSize=10
#最大的连接数量
maxActive=200
#最大空闲连接数量
maxIdle=10
#最小的空闲连接诶数量
minIdle=1
#超时时间(毫秒)
maxWait=15000

2. 在Java代码中, 将上面的配置文件, 变为Properties对象

InputStream is = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcp.properties");
Properties ppt = new Properties();
//加载一个流指向的文件
ppt.load(is);

3. 通过连接池工厂对象 获取一个连接池
DataSource ds = BasicDataSourceFactory.createDataSource(ppt);

4. 获取连接对象

Connection conn = ds.getConnection();

5. 使用完毕连接 , 正常关闭连接即可, 连接池会自动回收!

创建数据库连接池

编写properies配置文件

配置文件具体内容如下:
#驱动地址
driverClassName=oracle.jdbc.OracleDriver
#连接池
url=jdbc:oracle:thin:@localhost:1521:XE
#账号
username=scott
#密码
password=tiger
#最大连接数量
maxAcive=100
#初始连接数量
initialSize=5
#最大空闲连接数量
maxIdle=5
#最小空闲连接数量
minIdle=3
#超时等待时间
maxWait=1000

编写数据连接池工具类

具体实现代码如下:
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

/**
* @Auther:
* @Date: 2018/12/24 16:03
* @Description: 创建一个连接池工具类
*/
public class DBCPUtil {

private static DataSource dataSource;

static{
try{
//1、将properties文件夹在到输入流中
InputStream is = DBCPUtil.class.getClassLoader()
.getResourceAsStream("dbcp.properties");
//2、创建properties对象,用于读取第一步得到的输入流
Properties ps = new Properties();
//3、使用上述的properties对象,加载本地的properties文件
ps.load(is);
//4、使用连接池工厂类,创建连接池对象
DataSource dataSource = BasicDataSourceFactory
.createDataSource(ps);
}catch (Exception e){
e.printStackTrace();
}
}

//用于从连接池中,获取一个连接对象的操作方法
public static Connection getConnection(){
try{
return dataSource.getConnection();
}catch (Exception e){
e.printStackTrace();
return null;
}
}

//用于释放数据库的连接资源
public static void close(Connection conn, Statement state,
ResultSet resultSet){
try{
if(conn!=null){
conn.close();
conn = null;
}
if(state!=null){
state.close();
state = null;
}
if (resultSet!=null){
resultSet.close();
resultSet = null;
}
}catch (Exception e){
e.printStackTrace();
}
}
}

posted @ 2018-12-24 15:39  不服输的IT菜鸟  阅读(591)  评论(0)    收藏  举报