我们许多人有的是使用的时应用服务器自带的数据连接池,有的是使用dbcp,c3p0,proxypool等数据库连接池,以前我直接使用hibernate的时候,这些连接池的配置按照hibernate的文档配置没有问题,这段时间配置的是c3p0的JDBC数据库连接池。 多话不说了,代码贴出来,希望对大家有所帮助。
定义一个接口,里面三个抽象方法:
public interface IConnectionProvider {
public void configure(Properties props);
public Connection getConnection() throws SQLException;
public void closeConnection(Connection conn) throws SQLException;
public void close();
}
实现上面的三个接口,进行C3P0配置
public class C3P0ConnectionProvider implements IConnectionProvider {
private DataSource ds;
private static final Log log = LogFactory.getLog(C3P0ConnectionProvider.class);
public void configure(Properties props) {
String jdbcDriverClass = props.getProperty(Constant.JDBC_DRIVER);//JDBC驱动
try {
Class.forName(jdbcDriverClass);
String username = props.getProperty(Constant.JDBC_USERNAME);//jdbc连接用户名
String password = props.getProperty(Constant.JDBC_PASSWORD);//jdbc连接密码
String url = props.getProperty(Constant.JDBC_URL);//jdbc连接url字符串
DataSource ds_unpooled = DataSources.unpooledDataSource(url, username, password);
Properties overrides = new Properties();
String minSize = props.getProperty(Constant.JDBC_MINPOOLSIZE);
if (minSize == null || minSize.length() == 0) {
minSize = "10";
}
String maxSize = props.getProperty(Constant.JDBC_MAXPOOLSIZE);
if (maxSize == null || maxSize.length() == 0) {
maxSize = "30";
}
overrides.put("minPoolSize", Integer.parseInt(minSize));
overrides.put("maxStatements", "200");
overrides.put("maxPoolSize", Integer.parseInt(maxSize));
ds = DataSources.pooledDataSource(ds_unpooled, overrides);
} catch (Exception e) {
log.error("jdbc driver class not found ,the driver class is " + jdbcDriverClass, e);
}
}
public Connection getConnection() throws SQLException {
final Connection conn = ds.getConnection();
return conn;
}
public void closeConnection(Connection conn) throws SQLException {
conn.close();
}
public void close() {
try {
DataSources.destroy(ds);
} catch (SQLException sqle) {
log.warn("could not destroy C3P0 connection pool", sqle);
}
}
}
分享到:
相关推荐
配置C3P0连接池时,开发者通常需要在配置文件(如Hibernate的`hibernate.cfg.xml`或Spring的`applicationContext.xml`)中指定以下参数: - `driver_class`: 数据库驱动类名,例如`com.mysql.jdbc.Driver`。 - `...
**C3P0连接池配置详解** C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的主要特点是轻量级、高效且稳定,广泛应用于各种Java Web应用中。在本文中,我们将深入探讨...
C3P0连接池是Java开发中常用的数据库连接池组件,它可以帮助应用程序高效、稳定地管理数据库连接。C3P0是由Maurice Priess创建的一个开源项目,它旨在提供一个健壮、完全免费的JDBC连接池实现,以解决数据库连接管理...
- 连接池配置:允许开发者根据需求调整连接池的大小、超时时间等参数。 - 支持多线程:C3P0连接池在多线程环境下表现稳定,能有效处理并发请求。 - 动态扩展:可以根据应用负载动态调整连接池大小,提高系统响应...
**c3p0连接池配置使用** c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。使用c3p0连接池可以有效地管理和优化数据库连接,提高系统的性能和稳定性。下面将详细介绍c3p0的...
c3p0连接池配置, 个人找了很多资料 都在.txt里面,有项目完整配置,解释,还有一些相关网站资料等
C3P0就是一种广泛使用的第三方JDBC连接池实现,它被集成在Hibernate框架中,可以便捷地进行配置。 **1. 为什么选择C3P0连接池** Hibernate自带的连接池算法并不成熟,主要适用于快速开发和学习,而不适合在生产...
在IT行业的数据库管理领域,C3P0是一个...以上参数是C3P0连接池配置中最关键的部分,它们直接影响着数据库访问的性能和稳定性。在实际应用中,应根据业务需求和系统环境对这些参数进行细致调整,以达到最佳的运行效果。
3. **连接池配置**:用户可以根据实际需求配置连接池参数,如初始连接数、最大连接数、最小连接数、连接超时时间等,以优化系统资源利用。 4. **并发控制**:C3P0支持多线程环境下的并发访问,通过锁机制保证了多个...
配置C3P0连接池主要有三种方法:通过`config.properties`文件、`c3p0-config.xml`文件或是在程序中直接配置。 ##### 2.1 `config.properties`文件配置 `config.properties`是一种常见的配置文件格式,用于存储简单...
1. **配置文件**:C3P0的配置信息通常保存在名为`c3p0-config.xml`的XML文件中,该文件包含了连接池的参数设置,如初始化连接数、最大连接数、超时时间等。例如: ```xml <c3p0-config> ...
C3P0支持多数据源,可以为不同的数据库实例配置独立的连接池。此外,它还提供线程安全的连接管理,保证在多线程环境下安全地共享数据库连接。 5. **异常处理** 在源码中,我们可以看到C3P0对各种数据库操作异常的...
总之,c3p0连接池是Java应用中管理数据库连接的有效工具,通过合理配置和使用,可以显著提高系统的运行效率和稳定性。在实际开发中,应结合具体项目需求选择合适的连接池,并进行持续监控和优化。
它还支持细粒度的连接池配置,可以根据应用需求调整各种参数,比如最小空闲连接数、获取连接超时时间、测试连接的SQL语句等。通过这些配置,开发者可以优化数据库连接池的行为,使其更好地适应不同的应用负载和环境...
在实际使用中,我们需要配置C3P0连接池,这可以通过`C3P0连接池配置.txt`文件完成。配置项通常包括: - `minPoolSize`:最小连接数,启动时创建的连接数。 - `maxPoolSize`:最大连接数,超过这个数,应用将无法...
下面将详细介绍C3P0连接池的一些关键参数配置。 1. **初始化参数**: - `initialPoolSize`: 连接池启动时创建的初始连接数。设置合适的值可以避免启动时的延迟。 - `minPoolSize`: 连接池的最小连接数,即使在...
DBCP和C3P0连接池常用配置参数一览表DBCP和C3P0连接池常用配置参数一览表DBCP和C3P0连接池常用配置参数一览表
C3P0连接池的配置涉及到多个方面,用于优化数据库连接的创建、管理和维护。 1. **acquireIncrement**:当连接池中的连接耗尽时,C3P0会一次性尝试获取的连接数。默认值为3,这意味着当需要更多连接时,C3P0会每次...
3. **连接池配置**:c3p0提供了丰富的配置参数,允许开发者根据具体需求调整连接池的行为,例如最小、最大连接数、超时时间等。 4. **性能优化**:通过设置合适的参数,c3p0可以实现更高效的连接管理和使用,比如...