您的位置:首页 > 其它

连接池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);
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: