JDBC连接池之C3P0
Posted 濮成林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC连接池之C3P0相关的知识,希望对你有一定的参考价值。
1.导入jar包
c3p0-0.9.1.jar
mchange-commons-java-0.2.3.4(注:该jar包是c3p0数据库连接池的辅助包,没有这个包系统启动的时候会报classnotfoundexception,这是c3p0-0.9.2版本后分离出来的包,0.9.1的时候还是一个包就搞定的)
2.获取连接
C3P0有三种方式 实现。
1.自己动手写代码,实现数据源
例如:在类路径下配置一个属性文件,config.properties,内容如下:
driverClass=xxx
jdbcUrl=xxx
user=xxx
password=xxx
...
然后代码中实现
Properties props = new Properties(); InputStream in = Thread.class.getResourceAsStream("config.properties"); props.load(in); in.close(); ComboPooledDataSource cpds = new ComboPooledDataSource(); cpds.setDriverClass(props.getProperty("driverClass")); cpds.setJdbcUrl(props.getProperty("jdbcUrl")); cpds.setUser(props.getProperty("user")); cpds.setPassword(props.getProperty("password"));
2.配置默认的熟悉文件
类路径下提供一个c3p0.properties文件(不能改名)
配置如下:
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost/paper_tag
c3p0.user=root
c3p0.password=admin
3.路径下提供一个c3p0-config.xml文件
<c3p0-config> <default-config> <property name="user">root</property> <property name="password">java</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> </default-config> <named-config name="mySource"> <property name="user">root</property> <property name="password">java</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property>
</named-config> </c3p0-config>
这里我采用的是最简单的第二种方式。
package c3p0; import java.sql.Connection; import java.sql.SQLException; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0Util { private static ComboPooledDataSource ds = new ComboPooledDataSource(); public static Connection getConn() { try { return ds.getConnection(); } catch (SQLException e) { throw new RuntimeException(e); } } }
对于这种配置,如果classpath中有c3p0.properties的配置文件,代码中不需要设置连接信息,直接new ComboPooledDataSource(),他会自动读取配置文件中的配置。当然也可以使用c3p0-config.xml文件配置连接信息,使用xml作为配置信息的话,comboPoolDataSource还可以接受一个String参数,这个参数的名称是在c3p0-config.xml文件中配置,这就意味着我们可以在xml文件中可有都多个数据库源连接信息,比如可以是mysql,oracle的。
以上是关于JDBC连接池之C3P0的主要内容,如果未能解决你的问题,请参考以下文章