DBPool是一个对连接池进行管理的类,然后使用的是c3p0。其中的main()方法测试了连接池和jdbc的连接数据库速度。
public class DBPool {
private static DBPool dbPool;
private ComboPooledDataSource dataSource;
static {
dbPool = new DBPool();
}
public DBPool() {
try {
dataSource = new ComboPooledDataSource();
dataSource.setUser("root");
dataSource.setPassword("123456");
dataSource
.setJdbcUrl("jdbc:mysql://localhost:3306/jwdb");
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setInitialPoolSize(2);
dataSource.setMinPoolSize(1);
dataSource.setMaxPoolSize(10);
dataSource.setMaxStatements(50);
dataSource.setMaxIdleTime(60);
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
}
public final static DBPool getInstance() {
return dbPool;
}
public final Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException("无法从数据源获取连接 ", e);
}
}
public static void main(String[] args) throws SQLException {
//直接获取数据的测试,跟jdbc类似。
/* Connection con = null;
String sql="select agent_id from agent";
PreparedStatement ps;
//List list=new ArrayList();
try {
con = DBPool.getInstance().getConnection();
ps=con.prepareStatement(sql);
ResultSet rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString("agent_id"));
}
} catch (Exception e) {
} finally {
if (con != null)
con.close();
}
*/
System.out.println("使用连接池................................");
for (int i = 0; i < 20; i++) {
long beginTime = System.currentTimeMillis();
Connection conn = DBPool.getInstance().getConnection();
try {
PreparedStatement pstmt = conn
.prepareStatement("SELECT * FROM netbar");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
System.out.println("第" + (i + 1) + "次执行花费时间为:"
+ (endTime - beginTime));
}
System.out.println("不使用连接池................................");
for (int i = 0; i < 20; i++) {
long beginTime = System.currentTimeMillis();
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (Exception e1) {
e1.printStackTrace();
}
String url = "jdbc:mysql://localhost:3306/jwdb";
String user = "root";
String password = "123456";
Connection conn = DriverManager.getConnection(url, user, password);
try {
PreparedStatement pstmt = conn
.prepareStatement("SELECT * FROM netbar");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
// do nothing...
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();
System.out.println("第" + (i + 1) + "次执行花费时间为:"
+ (endTime - beginTime));
}
}
}
测试结果:
使用连接池................................
第1次执行花费时间为:687
第2次执行花费时间为:16
第3次执行花费时间为:15
第4次执行花费时间为:16
第5次执行花费时间为:94
第6次执行花费时间为:0
第7次执行花费时间为:0
第8次执行花费时间为:16
第9次执行花费时间为:16
第10次执行花费时间为:15
第11次执行花费时间为:16
第12次执行花费时间为:15
第13次执行花费时间为:0
第14次执行花费时间为:16
第15次执行花费时间为:16
第16次执行花费时间为:15
第17次执行花费时间为:16
第18次执行花费时间为:16
第19次执行花费时间为:15
第20次执行花费时间为:0
不使用连接池................................
第1次执行花费时间为:47
第2次执行花费时间为:31
第3次执行花费时间为:32
第4次执行花费时间为:15
第5次执行花费时间为:47
第6次执行花费时间为:16
第7次执行花费时间为:47
第8次执行花费时间为:15
第9次执行花费时间为:31
第10次执行花费时间为:32
第11次执行花费时间为:15
第12次执行花费时间为:32
第13次执行花费时间为:15
第14次执行花费时间为:32
第15次执行花费时间为:31
第16次执行花费时间为:15
第17次执行花费时间为:16
第18次执行花费时间为:31
第19次执行花费时间为:16
第20次执行花费时间为:16
以看出,在使用连接池时,第一次执行花费的时间稍长,因为第一次初始化操作需要创建多个连接并放入池中,以后使用时将会大大缩短执行时间。
在不使用连接池时,每次花费的时间都比较长。
分享到:
相关推荐
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0由Miquel Arroyo创建,因其高效、稳定且易用的特点,在Java Web应用中被广泛使用。在本文中,我们将详细介绍c3p0的...
C3P0是一个开源的JDBC连接池,由Miquel Piera创建。它提供了数据库连接的自动获取和释放,从而提高了应用程序的效率和响应速度。C3P0的主要特点包括: 1. **连接测试**:C3P0可以通过配置定期检查连接的健康状态,...
c3p0是一个完全开源的JDBC连接池,由Miquel Arroyo开发,遵循LGPL协议。它提供了一种高效、灵活的数据库连接管理方式,支持多种数据库,如MySQL、Oracle、PostgreSQL等。c3p0的核心特性包括连接池管理、自动测试连接...
C3P0连接池是一个开源的Java数据库连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在Java应用程序中,数据库连接的创建和销毁是耗时操作,而连接池则可以有效地管理这些连接,避免频繁地创建和...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。在本压缩包“数据库连接池C3P0.zip”中,包含了C3P0数据库连接池的相关jar包以及配置文件,用于帮助开发者集成到他们的...
C3P0是一款开源的Java连接池,全称为...综上,C3P0是一个可靠的数据库连接池实现,提供了丰富的配置选项和功能,对于Java开发者来说,理解其工作原理和正确配置使用,能有效提升应用的数据库访问效率和稳定性。
C3P0连接池是一个广泛使用的Java数据库连接池实现,它允许程序在多个数据库操作之间重用数据库连接,从而提高应用程序的性能和效率。数据库连接池管理着数据库连接的创建、分配、回收和销毁,避免了频繁的创建和关闭...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。本文将深入探讨c3p0的核心概念、功能以及使用方法。 一、c3p0简介 c3p0是由Miquel van Smoorenburg开发的一个轻量级的...
**c3p0** 是一个开源的 JDBC 连接池,它实现了数据源和 JNDI 绑定,支持 JDBC3 规范和 JDBC2 的标准扩展。在 Java 应用开发中,数据库连接池是必不可少的部分,它可以有效地管理数据库连接,提高应用程序的性能和...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的特点包括: 1. **自动管理连接**:自动创建、验证、回收和关闭数据库连接。 2. **多线程支持**:支持多线程环境下...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。由Maurice Priess创建并维护,c3p0因其轻量级、高效能和稳定性,被广泛应用于各种Java Web应用中,尤其是搭配Hibernate、...
- C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 - C3P0的核心功能包括连接池的配置、连接的获取与释放、连接超时、空闲连接检测等。 2. **C3P0的主要特性** - 自动...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0的特点包括自动检测失效的连接并尝试重连、支持多线程环境下的并发控制以及灵活的配置选项。然而,C3P0在处理大量并发...
本文将详细介绍如何配置 BoneCP 连接池,以及对比C3P0的配置方法。 1. **BoneCP的基本概念与优势** - BoneCP 是一个开源的JDBC连接池实现,它通过高效的连接管理和复用来提高数据库操作的效率。 - 与C3P0相比,...
c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0由Mchange公司开发,版本号0.9.5.2是其一个稳定版本,提供了对Java应用程序数据库连接管理的高效解决方案。这个版本...
4. **C3P0与其他连接池的对比** - **相较于DBCP**:C3P0提供了更丰富的配置选项和更完善的连接管理策略,如空闲连接检测和自动重连。 - **相较于HikariCP**:HikariCP以其极高的性能和低延迟著称,但配置相对简单...
在Java编程中,JDBC(Java Database Connectivity)是用于与各种数据库进行交互的标准接口。它允许Java应用程序通过发送SQL语句来...在实际开发中,合理使用JDBC连接池如HikariCP、C3P0等还能提高性能和资源管理效率。
- **简介**:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 - **特性**:C3P0提供了更丰富的配置选项,如连接测试、自动调整连接数量等,且在并发处理上有较好的表现...
首先,C3P0是一个开源的JDBC连接池,由Mchange公司提供。它的主要功能包括: 1. **连接池管理**:C3P0能创建并维护一定数量的数据库连接,避免了每次请求数据库时都需要创建新的连接,降低了系统开销。 2. **自动...