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;
}