前言:为了大家更好的学习,我尽量采用图文和代码的形式为大家详细而又简单的讲解,与你相遇倍感荣幸,因为成长历程需要你我一起见证,欢迎大家一起讨论
既然你们来到这,说明你们已经对连接池的已经了解了但是还是有必要提一下;
DBCP数据库连接池。是 Apache 上的一个 Java 连接池项目,也是 tomcat 使用的连接池组件。
导包: 单独使用DBCP需要2个包:commons-dbcp.jar和commons-pool.jar;
但据我实践,还需要一个日志Jar包:commons-logging-1.1.1
官方相关地址:地址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi;
百度网盘地址:链接:https://pan.baidu.com/s/1vzoWV4gZZVSaMlq3gZWw2g 密码:w3mv
driverName=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:orcl
username=scott
password=a
defaultAutoCommit=true:// 设置是否自动提交,默认为true
defaultReadOnly=false: // 是否为只读 默认为false
defaultTransactionIsolation=3:// 设置数据库的事务隔离级别默认为1,READ_UNCOMMITTED,推荐设置为3
initialSize=10: ?// 初始化数据池拥有的连接数量
maxActive=20: ?/池中最多可容纳的活着的连接数量,当达到这个数量不在创建连接
maxIdle=20: ?// 最大空闲等待,也就是连接等待队列超过这个值会自动回收未使用的连接,直到达到20
minIdle=5: // 最小空闲等待 ,数据池中最少保持的连接
maxWait=10000 ? // 最大等待时间,超过这个时间等待队列中的连接就会失效
testOnBorrow=true ?//从池中取出连接时完成校验 ,验证不通过销毁这个connection,默认为true,
testOnReturn=false ?//放入池中时完成校验,默认我fasle
validationQuery=select 1 ?// 校验语句,必须是查询语句,至少查询一列,设置了它onBorrow才会生效
validationQueryTimeout=1 ?// 校验查询时长,如果超过,认为校验失败
testWhileIdle=false ? // 清除一个连接时是否需要校验
timeBetweenEvictionRunsMillis=1 ?// DBCP默认有个回收器Eviction,这个为设置他的回收时间周期
numTestsPerEvictionRun=3 ?// Eviction在运行时一次处理几个连接
poolPreparedStatements=true ?//是否缓存
PreparedStatements
maxOpenPreparedStatements=1 // 缓存PreparedStatements的最大个数
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
public class DbcpConnection {
public static DataSource ds = null;
static {
// 初始化DS就可以提供连接,使用DBCP将初始化
Properties p = new Properties();// 使用这个工具类来读取文件的数据;
try {
p.load(DbcpConnection.class.getClassLoader().getResourceAsStream("dbcpconfig.properties"));
ds = BasicDataSourceFactory.createDataSource(p);
((BasicDataSource) ds).setDefaultTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConn() throws SQLException {
return ds.getConnection();
}
}
package dbcpVersionTwo;
import java.sql.Connection;
import org.junit.Test;
public class DbcpTest {
@Test
public void DbcpTest01() throws Exception{
DbcpConnection conn=new DbcpConnection();
Connection cn=conn.getConn();
System.out.println(conn);
cn.close();
}
}
这是测试oracle的;mysql只需要更改你的properties就行;