DBCP
DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要3个包:
common-dbcp.jar,
common-pool.jar
,common-collections.jar
由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
操作步骤
1、 赋值jar包及dbconfig.properties文件
2、 修改配置文件
3、 修改DBManager文件
a) 静态初始化块,加载配置文件
b) DataSource ds =
BasicDataSourceFactory.createDataSource(prop);
c) 修改getConnection()
public static Connection getConnection() throws SQLException{
return ds.getConnection();
}
3、在数据库操作中任然使用DBManager的getConnection和release方法即可
C3P0
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
1、 复制jar文件
c3p0-0.9.2-pre1.jar
mchange-commons-0.2.jar
2、 创建DBManager_c3p0
ds = new ComboPooledDataSource();
ds.setDriverClass("com.mysql.jdbc.Driver");
ds.setJdbcUrl("jdbc:mysql://localhost:3306/test");
ds.setUser("root");
ds.setPassword("admin");
ds.setInitialPoolSize(20);
ds.setMaxPoolSize(40);
ds.setMinPoolSize(10);
1、 测试代码
解决c3p0配置问题
1、 在src目录下创建c3p0-config.xml文件,在c3p0文档中找到配置文件案例代码复制到xml中,格式化代码。
2、 修改xml文件,添加driverClass, jdbcUrl, user, password四个属性如下
<c3p0-config>
<default-config>
<property name="automaticTestTable">con_test</property>
<property name="checkoutTimeout">30000</property>
<property name="idleConnectionTestPeriod">30</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>
</default-config>
<named-config name="mysql">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test</property>
<property name="user">root</property>
<property name="password">admin</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">30</property>
</named-config>
</c3p0-config>