连接池DBCP的使用
2014-06-12 15:16
369 查看
一,使用连接池DBCP,主要作用是:
1,提高性能,给客户带来价值
2,控制并发,提升安全性(ThreadLocal)
二,连接池的使用步骤
--导包
--修改数据库配置文件db.propertis
--重写DBUtil(BasicDataSourceFactory,BasicDataSource)
db.properties:
username=***
password=***
url=jdbc:oracle:thin:@localhost:1521:***
driverClassName=oracle.jdbc.OracleDriver
initialSize=***
maxActive=***
maxIdle=***
maxWait=***
DBUtil:
public class DBUtil {
private static DataSource ds;
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
static{
Properties p = new Properties();
try {
p.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
ds = BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("读取数据库资源文件失败!",e);
}
}
/*
* get Connection
*/
public static Connection getConnection(){
//tl.get(),以当前线程名从Map中取值
Connection con = tl.get();
if(con==null){
try {
//从连接池中获取,tl.set(con)以当前线程名为key,将con对象存入Map
con = ds.getConnection();
tl.set(con);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("获取数据库连接失败!", e);
}
}
return tl.get();
}
/*
* close Connection
*/
public static void close(){
Connection con = tl.get();
if(con!=null){
try {
con.close();
//将连接还回池中时,需要将ThreadLocal中对应的数据清理掉
tl.set(null);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭数据库连接失败!", e);
}
}
}
}
1,提高性能,给客户带来价值
2,控制并发,提升安全性(ThreadLocal)
二,连接池的使用步骤
--导包
--修改数据库配置文件db.propertis
--重写DBUtil(BasicDataSourceFactory,BasicDataSource)
db.properties:
username=***
password=***
url=jdbc:oracle:thin:@localhost:1521:***
driverClassName=oracle.jdbc.OracleDriver
initialSize=***
maxActive=***
maxIdle=***
maxWait=***
DBUtil:
public class DBUtil {
private static DataSource ds;
private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
static{
Properties p = new Properties();
try {
p.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
ds = BasicDataSourceFactory.createDataSource(p);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("读取数据库资源文件失败!",e);
}
}
/*
* get Connection
*/
public static Connection getConnection(){
//tl.get(),以当前线程名从Map中取值
Connection con = tl.get();
if(con==null){
try {
//从连接池中获取,tl.set(con)以当前线程名为key,将con对象存入Map
con = ds.getConnection();
tl.set(con);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("获取数据库连接失败!", e);
}
}
return tl.get();
}
/*
* close Connection
*/
public static void close(){
Connection con = tl.get();
if(con!=null){
try {
con.close();
//将连接还回池中时,需要将ThreadLocal中对应的数据清理掉
tl.set(null);
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException("关闭数据库连接失败!", e);
}
}
}
}
相关文章推荐
- hibernate DBCP 连接池使用的几点问题
- Hibernate3已经不再支持DBCP连接池,而推荐使用C3PO
- hibernate框架和dbcp或其他连接池的使用
- 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案
- DBCP连接池使用问题
- DBCP连接池使用
- jdbc基础 (五) 连接池与数据源:DBCP以及C3P0的使用
- dbcp开源连接池的使用例子
- 连接池c3p0,dbcp和proxool的使用
- 使用JDBC连接MySQL数据库--典型案例分析(三)----使用Apach DBCP连接池
- 使用dbcp 连接池
- 连接池DBCP的使用(JAVA源码)
- java dbcp连接池的使用
- JDBC实例--工具类升级,使用Apache DBCP连接池重构DBUtility,让连接数据库更有效,更安全
- 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案
- hibernate3 使用dbcp连接池异常
- Hibernate3已经不再支持DBCP连接池,而推荐使用C­3PO
- JNDI和在tomcat中配置DBCP连接池 元数据的使用 DBUtils框架的使用 多表操作
- jdbc基础 (五) 连接池与数据源 DBCP以及C3P0的使用