C3P0连接池

C3P0连接池

​ C3P0跟DBCP一样,是连接池项目,关于DBCP可以看我另一篇博客:https://blog.csdn.net/qq_43203949/article/details/109299959

​ 无论是DBCP连接池还是C3P0连接池操作基本都是一样。C3P0跟DBCP一样可以硬编码也可以用配置文件设置属性,用得比较多的都是通过配置文件来设置属性。

1.相关jar包

相关jar包建议直接去maven仓库下载就可以了,https://mvnrepository.com/

  • c3p0-0.9.1.2.jar
  • c3p0-oracle-thin-extras-0.9.5.jar(选,oracle的兼容包,上面的jar包基本能解决问题。)

2.创建C3P0的两种方式

2.1硬编码(通过对象设置)

直接new一个dataSource,并设置相关参数属性,直接放回DataSource,直接用就可以了。

public static DataSource getDataSourcewithc3p0(){
    ComboPooledDataSource dataSource=null;
	try {
            dataSource = new ComboPooledDataSource();
            dataSource.setUser("root");
            dataSource.setPassword("123456");
            dataSource.setJdbcUrl(jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8");
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
         	//设置连接数
            dataSource.setInitialPoolSize(30);
            dataSource.setMinPoolSize(10);
            dataSource.setMaxPoolSize(30);
           /*
           其他设置
            dataSource.setAcquireIncrement();                      
            dataSource.setMaxStatements();
            dataSource.setMaxIdleTime();
            dataSource.setIdleConnectionTestPeriod();
            dataSource.setAcquireRetryAttempts();
			*/
     	} catch (Exception e) {
         throw new RuntimeException(e);
     	}
     return dataSource;
}

2.2通过配置文件

在src目录下新建一个名叫 c3p0-config.xml 的文件,文件名固定。

​ 这里随便上网找了个模板,不过这里我要解释一下这个配置文件。其中default-config为默认配置,什么时候default-config会启用呢,那就是当named-config中没有的属性(property)会去default-config找对应的参数来补全参数。

与DBCP不同的是c3p0通过xml文件来配置。

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
   <!--默认配置-->
    <default-config>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </default-config>  
  
   <!--配置连接池mysql-->
    <named-config name="mysql">  
        <property name="driverClass">com.mysql.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/mytest</property>  
        <property name="user">root</property>  
        <property name="password">root</property>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </named-config>  
    
    <!--其他配置连接池-->
    <named-config name="Oracle">  
        <property name="driverClass">com.oracle.jdbc.Driver</property>  
        <property name="jdbcUrl">jdbc:oracle://localhost:3306/mytest</property>  
        <property name="user">root</property>  
        <property name="password">root</property>  
        <property name="initialPoolSize">10</property>  
        <property name="maxIdleTime">30</property>  
        <property name="maxPoolSize">100</property>  
        <property name="minPoolSize">10</property>  
        <property name="maxStatements">200</property>  
    </named-config>  
    <!--其他-->
    
</c3p0-config>

配置文件配好后,获得对象,然后通过配置对象创建dataSource。

public static DataSource getDataSourcewithc3p0(){
    //用配置文件中哪个数据源就写哪个名字
    ComboPooledDataSource dataSource=new ComboPooledDataSource("mysql");
    return dataSource;
}
posted @   鸭梨的药丸哥  阅读(9)  评论(0编辑  收藏  举报  
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示