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

    这个示例用到了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是每个线程都有的一个存储空间。

 

转载于:https://my.oschina.net/kyle1970/blog/91333

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值