码迷,mamicode.com
首页 > 数据库 > 详细

记录一个简单的dbcp数据连接池

时间:2015-11-27 00:49:40      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

    这个示例用到了ThreadLocal与dbcp,我觉得有点意思,就整理了下。使用dbcp,肯定要导入commons-dbcp.jar包。下面直接贴DBUtil代码:

public class DBUtil {
    private static DataSource ds;  //定义一个数据连接池
    //threadLocal是线程的局部变量,它的实例通常是类中的 private static 字段
    private static ThreadLocal<Connection> connLocal=new ThreadLocal<Connection>();
    static{
        Properties props=new Properties();
        try {
            props.load(DBUtil.class.getClassLoader().getResourceAsStream("dbcp.properties"));
            ds=BasicDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() throws SQLException{
        Connection conn=connLocal.get();
        if(conn==null){
            conn=ds.getConnection();
            connLocal.set(conn);
        }
        return conn;
    }
    public static void close() throws SQLException{
        Connection conn=connLocal.get();
        connLocal.set(null);//清空线程局部变量的内容
        if(conn!=null){
            try {
                conn.close();                
            } catch (Exception e) {e.printStackTrace();}
        }
    }
}

下面是dbcp.properties配置内容:

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/kyle1970
username=root
password=kyle1970
initialSize=2
maxActive=15
maxIdle=2
minIdle=1
maxWait=30000

个人感觉做了第二次的缓存。而ThreadLocal是每个线程都有的一个存储空间。

记录一个简单的dbcp数据连接池

标签:

原文地址:http://www.cnblogs.com/zhongkaiuu/p/dbcp.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!