俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步!
此笔记主要是c3p0-0.9.1.2版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。
c3p0数据库池技术,Spring框架就是默认使用此数据库池技术。必须引入jar包:c3p0-0.9.1.2.jar。1、使用方式一直接ComboPooledDataSource cbds = new ComboPooledDataSource();然后设置相应参数再获取Connection对象。(不推荐)2、使用Properties配置文件,类似dbcp。3、使用xml文件。也是使用ComboPooledDataSource cbds = new ComboPooledDataSource();不要再额外配置信息,直接就可以获取Connection对象。4、使用连接池后,当获取Connection对象时,获取的不是原对象而是代理对象,Connection的close()方法也经过重写,因此,Connection直接调用close()方法会被连接池收回资源,而并不是真正关闭Connection的链接。在使用时,应当手动调用close()方法,可以加快连接池的回收,否则影响性能和效率。xml文件路径跟名字已经固定(必须在src目录下建立c3p0-config.xml),default是使用的默认配置,jnb是指定使用的配置: <c3p0-config> <!-- 默认配置的数据源 --><default-config> <!-- 指定数据库的驱动 --><property name="driverClass">com.mysql.jdbc.Driver</property><!-- 指定数据库的连接URL --><property name="jdbcUrl">jdbc:mysql:///books20131012</property> (如果不简写则是jdbc:mysql://localhost:3306/books20131012)<!-- 指定连接的用户和密码 --><property name="user">root</property><property name="password">root</property><!-- 指定每次增长的连接数目 --><property name="acquireIncrement">5</property><!-- 指定初始化连接池中的连接数 --><property name="initialPoolSize">10</property><!-- 指定连接池中的最小连接数 --><property name="minPoolSize">5</property><!-- 指定连接池中的最大连接数 --><property name="maxPoolSize">20</property><!--最大空闲时间,单位为秒。1800秒内未使用则连接被丢弃,若为0则永不丢弃。Default: 0 --><property name="maxIdleTime" value="1800"></property></default-config> <!-- 指定名字的配置方式 --><named-config name="jnb"> <!-- 指定数据库的驱动 --><property name="driverClass">com.mysql.jdbc.Driver</property><!-- 指定数据库的连接URL --><property name="jdbcUrl">jdbc:mysql:///books20131012</property><!-- 指定连接的用户和密码 --><property name="user">root</property><property name="password">root</property><!-- 指定每次增长的连接数目 --><property name="acquireIncrement">5</property><!-- 指定初始化连接池中的连接数 --><property name="initialPoolSize">10</property><!-- 指定连接池中的最小连接数 --><property name="minPoolSize">5</property><!-- 指定连接池中的最大连接数 --><property name="maxPoolSize">20</property><!--最大空闲时间,单位为秒。1800秒内未使用则连接被丢弃,若为0则永不丢弃。Default: 0 --><property name="maxIdleTime" value="1800"></property></named-config> </c3p0-config>
使用代码示例:
package cn.itcast.c3p0;import java.beans.PropertyVetoException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import com.mchange.v2.c3p0.ComboPooledDataSource;/** * 该类主要对C3P0进行学习 * * @author NingBoJiao * */public class C3P0Test { //使用的是xml配置文件来获取参数。推荐使用此方法。 private static void test2() throws PropertyVetoException, SQLException { ComboPooledDataSource cbds = new ComboPooledDataSource("jnb"); Connection conn = cbds.getConnection(); String sql = "insert into accounts (name) values ('c3p0 哈哈2')"; PreparedStatement state = conn.prepareStatement(sql); state.execute(); state.close(); conn.close(); } //使用的是硬编码方式,不推荐此方法。 private static void test1() throws PropertyVetoException, SQLException { ComboPooledDataSource cbds = new ComboPooledDataSource(); cbds.setDriverClass("com.mysql.jdbc.Driver"); cbds.setJdbcUrl("jdbc:mysql:///personsystem"); cbds.setUser("root"); cbds.setPassword("root"); cbds.setInitialPoolSize(5); cbds.setMaxPoolSize(10); cbds.setMaxIdleTime(2); cbds.setAcquireIncrement(5); Connection conn = cbds.getConnection(); String sql = "insert into accounts (name) values ('c3p0')"; PreparedStatement state = conn.prepareStatement(sql); state.execute(); state.close(); conn.close(); }}