从网上看到的一个关于数据库连接在使用了C3P0前后的比较。本人暂时还没有测试过。
下面是一个C3P0的工具类。
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public final class ConnectionManager {
private static ConnectionManager instance;
private static ComboPooledDataSource dataSource;
private ConnectionManager() throws SQLException, PropertyVetoException {
dataSource = new ComboPooledDataSource();
dataSource.setUser("loux");
dataSource.setPassword("loux");
dataSource.setJdbcUrl("jdbc:oracle:thin:@192.168.100.70:1521:orcl");
dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
dataSource.setInitialPoolSize(5);
dataSource.setMinPoolSize(1);
dataSource.setMaxPoolSize(10);
dataSource.setMaxStatements(50);
dataSource.setMaxIdleTime(60);
}
public static final ConnectionManager getInstance() {
if (instance == null) {
try {
instance = new ConnectionManager();
} catch (Exception e) {
e.printStackTrace();
}
}
return instance;
}
public synchronized final Connection getConnection() {
Connection conn = null;
try {
conn = dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
}
接下来是数据库使用了c3p0连接池和没有使用c3p0的连接操作。
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.jdbc.pool.OracleDataSource;
public class ConnectionDemo {
public static void main(String[] args) throws SQLException {
System.out.println("使用连接池................................");
for (int i = 0; i < 20; i++) {
long beginTime = System.currentTimeMillis();
Connection conn = ConnectionManager.getInstance().getConnection();
try {
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM t_fmscpy200");
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();
OracleDataSource ods = new OracleDataSource();
ods.setUser("loux");
ods.setPassword("loux");
ods.setURL("jdbc:oracle:thin:@192.168.100.70:1521:orcl");
Connection conn = ods.getConnection();
try {
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM table_name");
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次执行花费时间为:1469
第2次执行花费时间为:0
第3次执行花费时间为:16
第4次执行花费时间为:0
第5次执行花费时间为:0
第6次执行花费时间为:15
第7次执行花费时间为:0
第8次执行花费时间为:0
第9次执行花费时间为:0
第10次执行花费时间为:0
第11次执行花费时间为:16
第12次执行花费时间为:0
第13次执行花费时间为:0
第14次执行花费时间为:0
第15次执行花费时间为:0
第16次执行花费时间为:16
第17次执行花费时间为:0
第18次执行花费时间为:0
第19次执行花费时间为:15
第20次执行花费时间为:0
不使用连接池................................
第1次执行花费时间为:47
第2次执行花费时间为:31
第3次执行花费时间为:32
第4次执行花费时间为:46
第5次执行花费时间为:32
第6次执行花费时间为:31
第7次执行花费时间为:47
第8次执行花费时间为:31
第9次执行花费时间为:47
第10次执行花费时间为:31
第11次执行花费时间为:47
第12次执行花费时间为:31
第13次执行花费时间为:32
第14次执行花费时间为:46
第15次执行花费时间为:47
第16次执行花费时间为:32
第17次执行花费时间为:46
第18次执行花费时间为:47
第19次执行花费时间为:32
第20次执行花费时间为:31
可以看出,在使用连接池时,第一次执行花费的时间稍长,因为第一次初始化操作需要创建多个连接并放入池中,以后使用时将会大大缩短执行时间。
在不使用连接池时,每次花费的时间都比较长。
转载于:http://topic.csdn.net/u/20070702/21/82749d1e-0746-415e-b7da-1ddfb3c885f5.html
分享到:
相关推荐
本文将详细探讨C3P0的配置与使用,以及使用前后的性能对比。 首先,了解C3P0的基本配置。在应用中引入C3P0依赖后,我们需要在配置文件(如`c3p0.properties`或`context.xml`)中设置连接池的相关参数。这些参数包括...
在本项目"C3P0+DBUtils+Ajax+Json+Jquery实现【增删改查】Demo"中,我们将探讨如何结合这些技术来构建一个功能完善的Web应用,用于执行基本的数据操作,即增(Add)、删(Delete)、改(Modify)和查(Query)。...
在IT行业中,数据库连接管理和代码生成是两个关键的领域,而这正是`c3p0`和`cglib`库所关注的重点。`c3p0`是一个开源的JDBC连接池,而`cglib`则是一个强大的Java代码生成库。让我们深入探讨这两个组件及其在软件开发...
通过注入数据源,JdbcTemplate可以与C3P0或Druid连接池配合使用。 综上所述,这个资源包提供了一套完整的数据库连接池解决方案,涵盖了C3P0和Druid两种流行的数据库连接池,以及JdbcTemplate工具类,对于Java开发...
《基于Servlet+JSP+C3P0+Layui的书籍管理系统》是一个综合性的Web应用程序,主要用于实现对书籍信息的管理。这个系统采用的技术栈主要包括Servlet、JSP、C3P0连接池以及前端框架Layui。接下来,我们将详细探讨这些...
在标题和描述中提到的"springMVC必须需的jar包"包含了C3P0、Druid、JSON和MySQL相关的jar,这些都是SpringMVC项目开发中常用的组件。 1. **C3P0**:这是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3...
6. C3P0:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0可以提高数据库访问效率,通过连接池管理数据库连接,避免频繁创建和销毁连接导致的性能损耗。 7. ...
Web开发基础,tomcat、servlet、JSP、session、cookie、el、jstl、filter、ajax、json、jdbc、c3p0、DButils等。 这是没有进行前后端分离的项目(高耦合),用于了解java web开发的发展。
1. **c3p0**: c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0提供了一些高级特性,如自动关闭空闲连接、连接测试等,用于提高数据库连接的效率和稳定性。 2. **...
标签中提到了"c3p0"和"mysql",这暗示了系统采用了Java作为后端语言,并且使用c3p0作为数据库连接池来管理MySQL数据库的连接。c3p0是一个开源的JDBC连接池,它可以提供更稳定和高效的数据库连接管理,减少资源浪费。...
另外,Spring MVC作为Spring框架的一部分,用于处理视图和控制器之间的交互,使得前后端分离更加明确。 在数据库层面,MySQL是关系型数据库管理系统,适用于处理大量数据。在这个项目中,MySQL用于存储音乐信息、...
在数据库连接方面,项目可能使用了c3p0-config.xml配置文件来设置c3p0数据源。c3p0是一个开源的JDBC连接池,它提供了数据源管理、连接自动获取和释放等功能,提高了数据库操作的效率和稳定性。 【文件名称列表解析...
本话题将聚焦于“jar包所在文件夹”,并讨论其中包含的`json-lib jar包`、`mysql驱动jar包`以及`c3p0 jar包`。 首先,我们来详细了解一下`json-lib jar包`。JSON(JavaScript Object Notation)是一种轻量级的数据...
6. **事件和监听器**:Hibernate提供了丰富的事件系统,允许在特定操作前后添加自定义逻辑,如保存、更新、删除、加载等。 7. **多态性支持**:Hibernate支持多态查询,可以根据继承关系将子类对象一起查询出来,...
通过C3P0,项目可以有效地管理和复用数据库连接,提高系统资源利用率,避免频繁创建和关闭连接带来的性能开销。 同时,项目使用MySQL作为关系型数据库管理系统,存储用户信息。MySQL因其高效、稳定和开源特性,在...
在"bigtest_版本3"中,使用c3p0作为数据源,可以实现数据库连接的高效管理和复用。 2. **JDBC**:Java Database Connectivity,是Java语言与各种数据库进行交互的一套标准API。开发者可以通过JDBC来执行SQL语句,...
使用了apache的dbutil通过结果集处理器直接转化为list,并使用c3p0连接池优化数据库访问。 前后通信前端使用ajax发送请求, 端使用jackson以结果类的形式将请求的数据封装为json返回。 缺点 购物车功能来不及实现了,...
- **配置与使用**:c3p0需要在项目的配置文件中设置相关参数,如最小连接数、最大连接数、初始化连接数等,然后在代码中通过DataSource获取数据库连接。 3. **分页查询**: - **原理**:为了提高用户体验和系统...
可能还涉及到连接池技术,如C3P0或Druid,提高数据库资源的管理和复用。 ### 6. RESTful API设计 为了实现前后端的有效通信,系统可能遵循REST(Representational State Transfer)架构风格设计API。RESTful API以...
配置C3P0连接池,然后通过C3P0的工具类获取连接,使用完后再关闭连接,以实现数据库连接的高效复用。 9. **JSP与Servlet的区别**:JSP主要负责视图展示,Servlet则负责控制逻辑。JSP最终会被编译成Servlet执行。每...