1、C3P0简介
C3P0也是开源免费的连接池!C3P0被很多人看好!
c3p0连接池
2、C3P0的使用
C3P0连接池所需jar包:c3p0-0.9.1.2.jar、mchange-commons-0.2.1.jar、数据库驱动包mysql-connector-java-5.1.34.jar
C3P0中池类是:ComboPooledDataSource
2.1 不用配置文件,用代码直接连接使用
public void fun1() throws PropertyVetoException, SQLException { ComboPooledDataSource ds = new ComboPooledDataSource(); ds.setJdbcUrl("jdbc:mysql://localhost:3306/mydb1"); ds.setUser("root"); ds.setPassword("123"); ds.setDriverClass("com.mysql.jdbc.Driver"); // 基本配置 ds.setAcquireIncrement(5); // 每次的增量为5 ds.setInitialPoolSize(20) ; // 初始化连接数 ds.setMinPoolSize(2) ; // 最少连接数 ds.setMaxPoolSize(50); // 最多连接数 Connection con = ds.getConnection(); System.out.println(con); con.close(); } |
2.2 使用配置文件连接
配置文件要求:
- 文件名称:必须叫c3p0-config.xml
- 文件位置:必须在src下
c3p0也可以指定配置文件,而且配置文件可以是properties,也可骒xml的。当然xml的高级一些了。但是c3p0的配置文件名必须为c3p0-config.xml,并且必须放在类路径下。因为配置文件的名称和位置固定,所以使用c3p0配置做连接时,不用指定路径。
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!-- 默认配置 --> <default-config> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">123</property> <property name="acquireIncrement">3</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">10</property> </default-config> <!-- 命名配置,其他连接配置,切换使用 --> <named-config name="oracle-config"> <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb2</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="user">root</property> <property name="password">123</property> <property name="acquireIncrement">3</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">2</property> <property name="maxPoolSize">10</property> </named-config> </c3p0-config> |
c3p0的配置文件中可以配置多个连接信息,可以给每个配置起个名字,这样可以方便的通过配置名称来切换配置信息。上面文件中默认配置为mysql的配置,名为oracle-config的配置也是mysql的配置,呵呵。
public void fun2() throws PropertyVetoException, SQLException { //不配置文件名称,因为配置文件名必须是c3p0-config.xml,使用默认配置 <default-config>。 ComboPooledDataSource ds = new ComboPooledDataSource(); Connection con = ds.getConnection(); System.out.println(con); con.close(); } |
public void fun2() throws PropertyVetoException, SQLException { // 使用名为<oracle-config>标签下的配置。 ComboPooledDataSource ds = new ComboPooledDataSource("orcale-config") ; Connection con = ds.getConnection(); System.out.println(con); con.close(); } |
dbcp使用的是装饰者模式,而c3p0使用的是动态代理。