编译及运行环境:winxp+jdk5.0+eclipse3.2+oracle9i
所需jar包:
oracle9.jar(oralce驱动器)
c3p0-0.9.1.2.jar
log4j-1.2.8.jar
commons-logging.jar
SystemConfigResources.properties
#oracle config
DRIVER_NAME=oracle.jdbc.driver.OracleDriver
DATABASE_URL=jdbc:oracle:thin:@127.0.0.1:1521:WORK
DATABASE_USER=system
DATABASE_PASSWORD=manager
#c3p0 config
Initial_PoolSize=10
Min_PoolSize=10
Max_PoolSize=50
Acquire_Increment=10
TIMEOUT=5000
MAX_IdleTime=1800
Idle_Test_Period=3000
Validate=true
SystemConfig.java
package com.database.config;
import java.util.*;
public class SystemConfig {
static String configFile = "com.database.config.SystemConfigResources";
public static String getConfigInfomation(String itemIndex) {
try {
ResourceBundle resource = ResourceBundle.getBundle(configFile);
return resource.getString(itemIndex);
} catch (Exception e) {
return "";
}
}
}
DatabaseAccessInterface.java
package com.database;
import java.sql.*;
import java.util.*;
public interface DatabaseAccessInterface {
public abstract void executeSQL(String sqlStatement) throws SQLException;
public abstract void executeSQL(String[] sqlStatement) throws SQLException;
public abstract void executeSQL(String sqlStatement, Object parameters[]) throws SQLException;
public abstract void executeSQL(String sqlStatement, List parameters) throws SQLException;
public abstract void executeSQL(String[] sqlStatement, List parameters) throws SQLException;
public abstract Vector executeQuerySQL(String sqlStatement) throws SQLException;
public abstract Vector executeQuerySQL(String sqlStatement, Object parameters[]) throws SQLException;
public abstract Vector executeQuerySQL(String sqlStatement, List parameters) throws SQLException;
public abstract String getSequenceNum(String tableName) throws SQLException;
}
DatabaseAccessFactory.java
package com.database;
public class DatabaseAccessFactory {
private static DatabaseAccessInterface databaseai = null;
public static DatabaseAccessInterface getDataAccessInstance() {
if (databaseai == null) {
databaseai = new DatabaseAccessImpl();
}
return databaseai;
}
}
DBConnectionManager.java
package com.database;
import java.sql.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.database.config.*;
import com.mchange.v2.c3p0.*;
public class DBConnectionManager {
private static Log log = LogFactory.getLog(DatabaseAccessImpl.class);
private static ComboPooledDataSource cpds = null;
public static void init() {
log.debug(">>>>>>>>>>>>>>>>>>>>>
<DBConnectionManager.init> Begin");
// 建立数据库连接池
String DRIVER_NAME = SystemConfig.getConfigInfomation("DRIVER_NAME"); // 驱动器
String DATABASE_URL = SystemConfig.getConfigInfomation("DATABASE_URL"); // 数据库连接url
String DATABASE_USER = SystemConfig.getConfigInfomation("DATABASE_USER"); // 数据库用户名
String DATABASE_PASSWORD = SystemConfig.getConfigInfomation("DATABASE_PASSWORD"); // 数据库密�码
int Min_PoolSize = 5;
int Max_PoolSize = 50;
int Acquire_Increment = 5;
int Initial_PoolSize = 10;
int Idle_Test_Period = 3000;// 每隔3000s测试连接是否可以正常使用
String Validate = SystemConfig.getConfigInfomation("Validate");// 每次连接验证连接是否可用
if (Validate.equals("")) { Validate = "false"; }
// 最小连接数
try {
Min_PoolSize = Integer.parseInt(SystemConfig.getConfigInfomation("Min_PoolSize"));
} catch (Exception ex) {
ex.printStackTrace();
}
// 增量条数
try {
Acquire_Increment = Integer.parseInt(SystemConfig.getConfigInfomation("Acquire_Increment"));
} catch (Exception ex) {
ex.printStackTrace();
}
// 最大连接数
try {
Max_PoolSize = Integer.parseInt(SystemConfig.getConfigInfomation("Max_PoolSize"));
} catch (Exception ex) {
ex.printStackTrace();
}
// 初始化连接数
try {
Initial_PoolSize = Integer.parseInt(SystemConfig.getConfigInfomation("Initial_PoolSize"));
} catch (Exception ex) {
ex.printStackTrace();
}
// 每隔3000s测试连接是否可以正常使用
try {
Idle_Test_Period = Integer.parseInt(SystemConfig.getConfigInfomation("Idle_Test_Period"));
} catch (Exception ex) {
ex.printStackTrace();
}
try {
cpds = new ComboPooledDataSource();
cpds.setDriverClass(DRIVER_NAME); // 驱动器
cpds.setJdbcUrl(DATABASE_URL); // 数据库url
cpds.setUser(DATABASE_USER); // 用户名
cpds.setPassword(DATABASE_PASSWORD); // 密码
cpds.setInitialPoolSize(Initial_PoolSize); // 初始化连接池大小
cpds.setMinPoolSize(Min_PoolSize); // 最少连接数
cpds.setMaxPoolSize(Max_PoolSize); // 最大连接数
cpds.setAcquireIncrement(Acquire_Increment); // 连接数的增量
cpds.setIdleConnectionTestPeriod(Idle_Test_Period); // �测连接有效的时间间隔
cpds.setTestConnectionOnCheckout(Boolean.getBoolean(Validate)); // 每次连接验证连接是否可用
} catch (Exception ex) {
ex.printStackTrace();
}
log.debug(">>>>>>>>>>>>>>>>>>>>>
<DBConnectionManager.init> End");
}
public static Connection getConnection() {// 获取数据库连接
Connection connection = null;
try {
if (cpds == null) {
init();
}
connection = cpds.getConnection(); // getconnection
} catch (SQLException ex) {
ex.printStackTrace();
}
return connection;
}
public static void release() {
try {
if (cpds != null) {
cpds.close();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
分享到:
相关推荐
总的来说,这个小例子向我们展示了Java应用程序如何利用C3P0连接池高效地管理Oracle数据库连接,提供了一个可扩展和可配置的解决方案。通过合理配置连接池参数,可以有效地优化数据库访问性能,降低系统的资源消耗。
总的来说,C3P0作为一款成熟的数据库连接池,对于Java开发者来说,是一个值得信赖的工具,可以帮助我们更有效地管理和使用数据库连接,提升应用程序的性能和可靠性。在实际项目中,根据具体需求合理配置C3P0,可以更...
总的来说,c3p0数据库连接池案例提供了一个完整的示例,涵盖了从配置到使用的全过程,有助于加深对数据库连接池概念的理解,并提升你在Java项目中的数据库管理能力。通过实践这个案例,你可以掌握如何更高效、更稳定...
C3P0是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接池扮演着非常重要的角色,它能够有效地管理数据库连接,提高系统性能,减少数据库资源...
开源数据库连接池c3p0是一款广泛应用于Java后端开发中的数据库连接管理工具,它能够有效地管理和优化数据库连接,提高应用的性能和响应速度。c3p0的主要功能包括连接池的创建、维护以及自动回收资源,使得多个并发...
在OracleC3P0-Connector.jar文件中,包含了实现Oracle数据库连接池功能所需的类和资源。这些类通常包括了数据库连接的创建、管理、回收等核心逻辑,通过c3p0的配置,可以实现数据库连接的复用,避免频繁创建和关闭...
C3p0提供了高效的数据库连接池服务,而Oracle和MySQL的JDBC驱动则确保了Java代码能与这两种数据库进行有效通信。这些`.jar`文件对于构建基于Java的数据库应用至关重要,它们简化了开发过程,提高了性能,并确保了...
- **commons-pool**:Apache Commons Pool是通用的对象池服务,可以用于创建各种资源的池化,包括C3P0在内的数据库连接池在底层使用了这个库来实现对象的管理和复用。 在实际开发中,你通常会将这些JAR包添加到项目...
在Oracle数据库中实现数据库连接池,通常会利用第三方提供的连接池组件,如Apache的DBCP、C3P0或者HikariCP等。这些组件遵循JDBC规范,提供了连接池的管理和监控功能。开发者只需要在应用程序中配置连接池的相关参数...
在Java中,有多种流行的数据库连接池实现,如Apache的DBCP、C3P0、HikariCP和Apache的Deltaspike Data Pool等。这些库提供了管理和维护数据库连接的功能,包括初始化连接池、获取和释放连接、自动关闭连接以及监控...
在Java中,有多种流行的数据库连接池实现,如Apache的DBCP、C3P0,以及HikariCP等。以HikariCP为例,它被广泛认为是性能最佳的连接池,因为它提供了快速的连接获取和释放,以及低延迟的特性。 使用数据库连接池的...
总的来说,DBCP和C3P0都是优秀的数据库连接池实现,它们通过高效的连接管理,提高了系统的性能和稳定性,是Java开发者在构建数据库驱动的应用程序时不可或缺的工具。正确理解和使用这些连接池,可以帮助我们构建出更...
C3P0数据库连接池是一种开源的Java数据库连接池组件,它允许应用程序高效地管理和复用数据库连接。C3P0是由Mchange公司开发的,它的全称是Composited Connection Pooling Proxies。这个连接池的主要目的是提高数据库...
C3P0连接池是Java应用中常用的数据库连接池组件,它允许程序在不关闭物理连接的情况下,管理和重用数据库连接,从而提高了应用程序的性能和效率。C3P0库依赖于其他几个JAR包来实现其功能,包括`c3p0-0.9.2.1.jar`、`...
在Java中,有多种数据库连接池实现,包括C3P0、DBCP和Proxool等。 **C3P0连接池配置参数详解** 1. `acquireIncrement`:当连接池中的连接耗尽时,一次同时尝试获取的连接数。默认值为3,意味着如果连接池为空,它...
C3P0是一个开源的Java数据库连接池,版本号为0.9.5.2,它主要用于提升应用程序在处理数据库连接时的效率和性能。在Java应用开发中,数据库连接的建立和关闭是一个相对耗时的过程,频繁进行这样的操作会大大降低系统...
C3P0是一个开源的Java连接池实现,专为Oracle数据库和其他支持JDBC的数据库设计。这个工具可以帮助开发者解决在多线程环境下频繁创建和关闭数据库连接所导致的性能问题。 C3P0连接池的核心功能包括: 1. **连接...
C3P0连接池是Java开发中常用的数据库连接池组件,它由M-Fenyes创建并维护,旨在提供一个高效、灵活且稳定的数据库连接管理工具。数据库连接池在多线程应用中扮演着重要角色,它能有效地管理和复用数据库连接,避免...
C3P0则是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了对JDBC连接的管理,使得数据库连接可以被多个请求共享,提高了系统的性能和效率。本文将详细介绍如何在Java开发中对Oracle数据库与C3P0连接池进行...