Java连接池详解(二)
来源:互联网 发布:腾达ac6 访客网络限速 编辑:程序博客网 时间:2024/06/11 02:06
C3P0连接池
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0一般是与Hibernate,Spring等框架一块使用的,当然也可以单独使用。
dbcp没有自动回收空闲连接的功能,c3p0有自动回收空闲连接功能。
使用c3p0需要导入c3p0.jar、mchange-commons-.jar,如果操作的是Oracle数据库,那么还需要导入c3p0-oracle-thin-extras-pre1.jar。
步骤1:
在类目录下加入C3P0的配置文件:c3p0-config.xml
[html] view plaincopyprint?
<c3p0-config>
<!-- C3P0的缺省(默认)配置,-->
<!-- 如果在代码中“ComboPooledDataSourceds = new ComboPooledDataSource();”这样写就表示使用的是C3P0的缺省(默认)配置信息来创建数据源 -->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/anysearch</property>
<property name="user">root</property>
<property name="password">123456</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default:3 -->
<property name="acquireIncrement">5</property>
<!--初始化的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3-->
<property name="initialPoolSize">10</property>
<!--连接池中保留的最小连接数-->
<property name="minPoolSize">5</property>
<!--连接池中保留的最大连接数。Default:15 -->
<property name="maxPoolSize">20</property>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts">30</property>
<!--两次连接中间隔时间,单位毫秒。Default: 1000 -->
<property name="acquireRetryDelay">1000</property>
<!--连接关闭时默认将所有未提交的操作回滚。Default: false -->
<property name="autoCommitOnClose">false</property>
</default-config>
<!-- C3P0的命名配置,-->
<!-- 如果在代码中“ComboPooledDataSourceds = new ComboPooledDataSource("MySQL");”这样写就表示使用的是name是MySQL的配置信息来创建数据源 -->
<named-config name="MySQL">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/test2</property>
<property name="user">root</property>
<property name="password">123456</property>
<property name="acquireIncrement">5</property>
<property name="initialPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="maxPoolSize">20</property>
</named-config>
</c3p0-config>
还有更多可设置的参数,具体可查阅相关资料。
步骤2:
在获取数据库连接的工具类(如jdbcUtils)的静态代码块中创建池
[java] view plaincopyprint?
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class JdbcUtils_C3P0 {
private static ComboPooledDataSource ds =null;
static{
try{
ds = newComboPooledDataSource("MySQL");
}catch (Exception e) {
throw newExceptionInInitializerError(e);
}
}
public static Connection getConnection()throws SQLException{
return ds.getConnection();
}
public static void release(Connection conn){
if(conn!=null){
try{
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
步骤3:
在应用中获取连接
[java] view plaincopyprint?
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try{
conn = JdbcUtils_C3P0.getConnection();
……
}catch (Exception e) {
e.printStackTrace();
}finally{
JdbcUtils_C3P0release(conn);
}
其他连接池
此外,还有其他的连接池可供选择,比如使用比较广泛的Proxool。Proxool是一种Java数据库连接池技术。是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。
proxool和 c3p0能够更好的支持高并发,但是在稳定性方面略逊于dpcp。
可根据项目的实际需要来选择连接池。
- Java连接池详解(二)
- Java连接池详解
- Java连接池详解
- Java连接池详解
- Java连接池详解
- Java连接池详解
- Java连接池详解
- Java连接池详解
- java学习篇:连接mySQL(二)--自定义连接池
- java连接池详解(一)
- java连接池使用方法二
- Java线程池详解(二)
- java连接池配置详解
- Java连接池详解 tomcat
- java synchronized详解(二)
- java IO详解(二)
- JAVA Synchronized 详解(二)
- Java NIO 详解(二)
- File .节字.字符流 .异常等
- Pthon二
- win10系统瑞星杀毒的卸载
- 设计模式之命令模式
- 山东省第八届 ACM 省赛 CF (01背包、水)
- Java连接池详解(二)
- 括号配对问题
- 即将毕业来到公司实习的第一天(4月24)
- Spring Cloud Feign常见问题
- 1091. Acute Stroke (30)
- (7)hadoop学习——hive的复杂数据类型
- 服务优化之二(使用php语言结构代替函数)
- 面试题7:用两个栈实现队列
- 冒泡排序——java实现