Java-C3P0连接池使用方法

一、导包

https://sourceforge.net/projects/c3p0/files/latest/download?source=files下载最新C3PO的二进制包。

二、配置文件

在工程的src下新建一个名为c3p0-config.xml且内容为:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>

  <default-config>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql:///数据库名</property>
    <property name="user">root</property>
    <property name="password">123</property>
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">20</property>
  </default-config>

  <named-config name="c3p0"> 
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql:///数据库名</property>
    <property name="user">root</property>
    <property name="password">123</property>
  </named-config>

</c3p0-config>

常见配置项

分类

属性

描述

必须项

user

用户名

password

密码

driverClass

驱动

mysql驱动,com.mysql.jdbc.Driver

jdbcUrl

路径

mysql路径,jdbc:mysql://localhost:3306/数据库

基本配置

acquireIncrement

连接池无空闲连接可用时,一次性创建的新连接数

默认值:3

initialPoolSize

连接池初始化时创建的连接数

默认值:3

maxPoolSize

连接池中拥有的最大连接数

默认值:15

minPoolSize

连接池保持的最小连接数

maxIdelTime

连接的最大空闲时间。如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,如果为0,则永远不会断开连接。

默认值:0

管理连接池的大小和连接的生存时间

maxConnectionAge

配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。当然正在使用的连接不会马上断开,而是等待它close再断开。配置为0的时候则不会对连接的生存时间进行限制。

默认值:0

maxIdleTimeExcessConnections

这个配置主要是为了减轻连接池的负载,配置不为0,则会将连接池中的连接数量保持到minPoolSize,为0则不处理

配置PreparedStatement缓存

maxStatements

连接池为数据源缓存的PreparedStatement的总数。由于PreparedStatement属于单个Connnection,所以这个数量应该根据应用中平均连接数乘以每个连接的平均PreparedStatement来计算。为0的时候不缓存,同时maxStatementsPerConnection的配置无效。

maxStatementsPreConnection

连接池为数据源单个Connection缓存的PreparedStatement数,这个配置比maxStatements更有意义,因为它缓存的服务对象是单个数据连接,如果设置的好,肯定是可以提高性能的。为0的时候不缓存。

三、编写工具类

public class JdbcUtils {  

    private static ComboPooledDataSource dataSource = new ComboPooledDataSource();

    public static DataSource getDataSource() {
        return dataSource;
    }

    public static Connection getConnection() {
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public static void release(ResultSet rs, PreparedStatement pstmt, Connection conn){  

        if(rs!=null){  
            try {  
                rs.close();  
            } catch (SQLException e) {  

                e.printStackTrace();  
            }  
            rs = null;  
        }  

        if(pstmt!=null){  
            try {  
                pstmt.close();  
            } catch (SQLException e) {  

                e.printStackTrace();  
            }  
            pstmt= null;  
        }  

        if(conn!=null){  
            try {  
                conn.close();  
            } catch (SQLException e) {  

                e.printStackTrace();  
            }  
            conn = null;  
        }  
    }  
} 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值