有事没事领个红包

c3p0数据库连接池管理

之前已经讲过dbcp可以用于数据库连接池进行管理。另一种技术c3p0也可以用于数据库连接池管理,其中Spring等框架都是基于c3p0技术进行数据库连接池管理的。

使用之前需要引入 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.11.jar 包,主要的类是ComboPooledDataSource,也有两种方式进行设置。一种是代码中进行设置,一种是在配置文件中设置。主要区别就是这种方式只有一个主要类ComboPooledDataSource。

他们之间可能方法名有所不同,但是功能是一样的。

1)在代码中进行配置,代码如下

复制代码
ComboPooledDataSource dataSource = new ComboPooledDataSource();
        
        try {
            dataSource.setJdbcUrl("jdbc:mysql:///mydb?useSSL=true");
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setUser("root");
            dataSource.setPassword("123456");
            dataSource.setMaxIdleTime(600);
            dataSource.setMaxPoolSize(100);
            dataSource.setInitialPoolSize(5);
            Connection conn = dataSource.getConnection();
            
            String sql = "select * from user where id=?";
            QueryRunner qr = new QueryRunner();
            User user = qr.query(conn, sql, new BeanHandler<User>(User.class), 2);
            
            System.out.println(user);
            
            dataSource.close();
            
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
复制代码

 

2) 在配置文件中进行设置

注意:配置文件命名是 c3p0-config.xml。系统默认回去 CLASSPATH、WEB-INF/classes文件夹中搜索配置文件,所以把他放在 src 目录下即可。

复制代码
ComboPooledDataSource dataSource = new ComboPooledDataSource("mysql_config");   //使用指定配置名的配置
        try {
            Connection conn = dataSource.getConnection();
            String sql = "select * from user where id=?";
            QueryRunner qr = new QueryRunner();
            User user = qr.query(conn, sql, new BeanHandler<User>(User.class), 2);
            
            System.out.println(user);
            
            dataSource.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
复制代码

 

配置文件中可以进行设置的参数如下:

 

 

配置文件样例如下

复制代码
<c3p0-config>
  <default-config>
    <property name="checkoutTimeout">3000</property>
    <property name="idleConnectionTestPeriod">30</property>
    <property name="initialPoolSize">5</property>
    <property name="maxIdleTime">60</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">5</property>

    <user-overrides user="test-user">
      <property name="maxPoolSize">10</property>
      <property name="minPoolSize">1</property>
      <property name="maxStatements">0</property>
    </user-overrides>

  </default-config>
  <named-config name="mysql_config">
      <property name="initialPoolSize">5</property>
      <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb?useSSL=true</property>
      <property name="driverClass">com.mysql.jdbc.Driver</property>
      <property name="maxPoolSize">100</property>
      <property name="initialPoolSize">5</property>
      <property name="maxIdleTime">60</property>
      <property name="password">123456</property>
      <property name="user">root</property>
  
  </named-config>

 
</c3p0-config>
复制代码

 

posted @   crazyCodeLove  阅读(948)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示