DBCP连接池

    学习线程的时候接触过线程池,连接数据库的时候我们又开始接触连接池,那么到底什么是连接池,它有什么作用?如何使用连接池呢?

为什么使用连接池?

    在我们做项目,不可避免的要操作数据,获取连接和释放资源是非常消耗系统资源的,那么为了提高系统的性能,我们就来采用连接池技术,共享连接Connection,这样就不用每次使用数据来连接,使用完毕关闭资源了,大大提高了开发性能。

什么是连接池?

    用池来管理Connection,这样可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。


如何使用连接池?

1、首先导入两个jar包,同样是Apache common的成员:commons-dbcp-1.4.jar和commons-pool-1.5.6.jar

2、定义DataSource接口的实现类,而dbcp包中就提供了这样的实现类,这样就可以更加需要的数据库来定义相应的数据库驱动。

3、通过连接池来创建连接,操作数据

注:创建的配置


【代码实现】

//工具类 
public class JDBCUtils {
	private static BasicDataSource basicDataSource=new BasicDataSource();
	static {
               //必须配置
		basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
		basicDataSource.setUrl("jdbc:mysql://localhost:3306/mydata");//切记要写对
	                                       	
		basicDataSource.setUsername("root");
		basicDataSource.setPassword("321");
		//可选配置
		basicDataSource.setInitialSize(10);//初始化10个连接池
		basicDataSource.setMaxActive(7);//最大连接数
		basicDataSource.setMinIdle(4);//最小空闲数
		basicDataSource.setMaxIdle(6);//最大空闲数
		try{
			Connection con = basicDataSource.getConnection();
			System.out.println(con);
		}catch(SQLException ex){
			System.out.println(ex);
			throw new RuntimeException(ex+"数据库连接失败");
		}
	}
	public static DataSource getBasicDataSource(){
		return  basicDataSource;
	}
}

//测试类
public class DBCPDemo {   
    public static void main(String[] args) throws SQLException {
        DataSource basicDataSource = JDBCUtils.getBasicDataSource();
        QueryRunner qr=new QueryRunner(basicDataSource);
        
        String sql="Select * from sort where sid=?";
        Object [] params={7};
        List<Object[]> list = qr.query(sql, new ArrayListHandler(),params);
        for (Object[] objs : list) {
            for (Object obj : objs) {
                System.out.println(obj);
            }
            System.out.println();
        }
    }
}

【小结】

    这就是DBCP连接池的使用,可以大大提供系统的性能,可能现在我们的项目比较小,还没有真正体会到效率提高的到底有多少,相信在今后接触到更大的项目,我们会经常使用连接池的,继续前行……


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值