JDBC数据库连接池dbcp

一、数据库连接池
      我们知道,在开发基于数据库的Web程序时,对数据库进行操作时,传统的步骤为:①在主程序中建立数据库连接,②进行SQL操作③释放数据库连接,但是这种传统的方法存在着一些问题,其中最显著的问题就是当每次需要数据库连接的时候,就会向数据库申请建立一个连接,等到执行完操作之后就会释放这个连接,这样的话每次访问数据库都会消耗一定的时间,当频繁的进行数据库的连接操作时,就会占用很多资源,而数据库的连接资源也没有得到很好的利用,而这种方法也不能够控制创建的连接对象数,容易导致内存泄漏。
      因此,为了解决这些问题,可以采用数据库连接池,其主要思想就是数据库连接建立一个缓冲池,先在这个缓冲池中放入一定数量的连接(放入数量由开发人员来指定),当需要建立数据库连接的时候,只需要从缓冲池中取出一个连接,使用完成之后再放回去即可,因此,数据库连接池就是负责分配,管理何释放数据库连接的一个工具,它使得应用程序在需要时可以重复使用一个现有的数据库连接,而不需要重新建立一个新的连接。
      JDBC中的数据库连接池用javax.sql.DataSource来表示,DataSource叫做数据源,它包含了连接池和连接池管理两个部分,通常也把它叫做连接池。它只是一个接口,而该接口的实现通常是由服务器或者一些开源组织实现,如DBCP数据库连接池,下面来介绍以下DBCP连接池
二、DBCP数据源
      DBCP是阿帕奇(apache)提供的一个开源的连接池实现,该连接池还依赖于apache下的另一个开源系统:Commom pool,如果想要使用DBCP连接池,需要去apache官网去下载DBCP以及pool的jar包来将其加入到项目中,下载地址为
下面是一个实例利用数据库连接池来建立数据库连接,其中有两个方法,一个是耦合的方法,一个是通用的方法:
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.commons.dbcp2.BasicDataSource;
import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.junit.Test;
public class DataSource_Test {
       /**
        * 使用DBPC数据库连接池连接数据库
        * 步骤:
        * 1、导入commons pool2 jar包与commons dbcp2 jar包
        * 2、创建数据库连接池(数据源实例)
        * 3、将连接数据库必要的属性作为参数传入到数据源中指定的方法中
        * 4、从数据源获取数据库连接
        * @throws SQLException
        */
@Test
    public void TestDBCP() throws SQLException{
       BasicDataSource dataSource = null;
       //1、创建数据源实例
       dataSource = new BasicDataSource();
       //2、传入必要的连接数据库的参数
       
       dataSource.setUsername("root");
       dataSource.setPassword("090936");
       dataSource.setUrl("jdbc:mysql://localhost:3306/test");
       dataSource.setDriverClassName("com.mysql.jdbc.Driver");
       //3、传入可选的参数
        dataSource.setMaxTotal(5);//指定同一时刻可以向数据库连接池中申请的最大连接数
        dataSource.setInitialSize(5);//指定数据库连接池中初始化连接数的个数
        dataSource.setMinIdle(2);//指定在数据库连接池中保存的最少的空闲连接的数量
        dataSource.setMaxWaitMillis(5000);//设定等待数据库连接池分配连接的最长时间(以毫秒为单位),超出改时间则抛出异常
       //3、从数据源获取数据库连接
       Connection con = dataSource.getConnection();
       System.out.println(con);
    }
/**
 * 使用DBCP数据库连接池编写通用的连接数据库的方法
 * 1、创建一个名为"dbcp.properties"的文件,里面存入连接数据库所需的信息,其中的键应该来自BasicDataSource中的属性
 * 2、加载"dbcp.properties"文件
 * 3、调用BasicDataSourceFactory中的createSource()方法创建DataSource
 * 4、从DataSource中获取数据库连接
 * @throws Exception
 */
@Test
    public void TestDBCP2() throws Exception{
       Properties properties = new Properties();
           InputStream in = DataSource_Test.class.getClassLoader().getResourceAsStream("dbcp.properties");
           properties.load(in);//加载dbcp.properties文件
           DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);//创建数据源
           Connection con = dataSource.getConnection();//获取数据库连接
           System.out.println(con);
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值