实现连接池
使用两个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();
}
}
}