JDBC连接池

JDBC连接池

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

JDBC数据库连接池接口(DataSource)
  Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!

通过dbcp或者c3p0连接池获取连接
一.通过dbcp连接池获取连接
(1).创建文件类型为properties的文件,并且在里面写好配置信息
这是dbcp.properties文件配置内容
此文件的各个名称顺序不得更改
初始化时的连接对象数
initialsize=3;
设置最大等待时间
MaxWait(3000);
最大空闲数,数据库连接的最大空闲时间。超过空闲时间,数据库连接将被标记为不可用,然后被释放。设为0表示无限制
maxIdle=3000
池子中,最多有多少个空闲的连接对象
MaxIdle(6);
池子中,最多能装多少个连接对象
MaxActive(8);
创建好配置文件建议与JDBCUtil放在同一文件夹下
(2)创建Util文件夹,并且创建JdbcUtil.classs类文件
JdbcUtil文件内容如下

public static Connection builtConnection() throws Exception {
        InputStream input = JdbcUtil.class.getResourceAsStream("dbcp.properties");
        //上面的JdbcUtil.class为dbcp.properties所在文件夹根目录下的java.class文件.不一定是本类
        Properties prop = new Properties();
        prop.load(input);
        BasicDataSource bds = (BasicDataSource) BasicDataSourceFactory.createDataSource(prop);
        //通过调用BasicDataSource来接收通过类型转换后的BasicDataSourceFactory调用creatDataSource(prop)方法,参数是上面的prop也就是加载了dbcp文件
        return bds.getConnection();
        //返回一个Connection类型,这样在别的类里可以直接用Connection conn = JdbcUtil.builtConnection();来获取连接对象.
    }
    public void close(Connection conn) throws SQLException {
        conn.close();
        //直接调用Connection里的close方法来关闭连接对象,并将连接对象放回连接池
    }

二.通过c3p0来从连接池获取连接
(1).导入jar包的时候除了必须要导入c3p0-0.9.2.1.jar以外,还需要导入mchange-commons-java-0.2.3.4.jar来配合使用,不然会报错,并且无法解释,报出的错误显示缺少c3p0下一个已有的类文件,但是这个文件已经存在,导入mchange-commons-java-0.2.3.4.jar之后,错误就会消失
(2)首先创建c3p0的配置文件.新建一个xml的文件,文件名必须是c3p0-config.xml并且必须放在src根目录下
有一个条件不满足都不会读取到配置信息
这里写图片描述

<c3p0-config>
<!-- c3p0默认配置,下面还可以配置多个数据库 -->
    <default-config>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc
        </property>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="user">root</property>
        <property name="password">newpass</property>
        <property name="initialPoolSize">3</property>
        <property name="maxPoolSize">6</property>
        <property name="maxIdleTime">1000</property>
    </default-config>

    <named-config name="mysql_config">
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="user">root</property>
        <property name="password">newpass</property>
        <property name="initialPoolSize">3</property>
        <property name="maxPoolSize">6</property>
        <property name="maxIdleTime">1000</property>
    </named-config>

</c3p0-config>

(3).直接使用获取连接

ComboPooledDataSource cpds = new ComboPooledDataSource();
Connection conn = cpds.getConnection();
conn.close();
//最后关闭数据连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值