`

C3P0使用前后的比较

阅读更多

从网上看到的一个关于数据库连接在使用了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依赖后,我们需要在配置文件(如`c3p0.properties`或`context.xml`)中设置连接池的相关参数。这些参数包括...

    c3p0+dbUtils+Ajax+Json+Jquery实现【增删改查】Demo

    在本项目"C3P0+DBUtils+Ajax+Json+Jquery实现【增删改查】Demo"中,我们将探讨如何结合这些技术来构建一个功能完善的Web应用,用于执行基本的数据操作,即增(Add)、删(Delete)、改(Modify)和查(Query)。...

    c3p0-0.9.0 cglib-2.2 cglib-nodep-2.2

    在IT行业中,数据库连接管理和代码生成是两个关键的领域,而这正是`c3p0`和`cglib`库所关注的重点。`c3p0`是一个开源的JDBC连接池,而`cglib`则是一个强大的Java代码生成库。让我们深入探讨这两个组件及其在软件开发...

    数据库连接池 包含C3P0和Druid.7z

    通过注入数据源,JdbcTemplate可以与C3P0或Druid连接池配合使用。 综上所述,这个资源包提供了一套完整的数据库连接池解决方案,涵盖了C3P0和Druid两种流行的数据库连接池,以及JdbcTemplate工具类,对于Java开发...

    基于Servlet+Jsp+C3p0+Layui书籍管理系统.zip

    《基于Servlet+JSP+C3P0+Layui的书籍管理系统》是一个综合性的Web应用程序,主要用于实现对书籍信息的管理。这个系统采用的技术栈主要包括Servlet、JSP、C3P0连接池以及前端框架Layui。接下来,我们将详细探讨这些...

    springMVC必须需的jar包(包括C3P0、druid、json、mysql等jar)

    在标题和描述中提到的"springMVC必须需的jar包"包含了C3P0、Druid、JSON和MySQL相关的jar,这些都是SpringMVC项目开发中常用的组件。 1. **C3P0**:这是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3...

    简单的Maven+SSM+MySQL+C3P0+BootStrap 。初次整合完成,学习Git提交github分享.zip

    6. C3P0:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0可以提高数据库访问效率,通过连接池管理数据库连接,避免频繁创建和销毁连接导致的性能损耗。 7. ...

    Java项目图书管理系统(前后端不分离 web入门).zip

    Web开发基础,tomcat、servlet、JSP、session、cookie、el、jstl、filter、ajax、json、jdbc、c3p0、DButils等。 这是没有进行前后端分离的项目(高耦合),用于了解java web开发的发展。

    各种前后端开发jar包

    1. **c3p0**: c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0提供了一些高级特性,如自动关闭空闲连接、连接测试等,用于提高数据库连接的效率和稳定性。 2. **...

    物流管理系统门户网站和移动端的实现

    标签中提到了"c3p0"和"mysql",这暗示了系统采用了Java作为后端语言,并且使用c3p0作为数据库连接池来管理MySQL数据库的连接。c3p0是一个开源的JDBC连接池,它可以提供更稳定和高效的数据库连接管理,减少资源浪费。...

    Java+MySQL在线音乐网站

    另外,Spring MVC作为Spring框架的一部分,用于处理视图和控制器之间的交互,使得前后端分离更加明确。 在数据库层面,MySQL是关系型数据库管理系统,适用于处理大量数据。在这个项目中,MySQL用于存储音乐信息、...

    商城项目(java)

    在数据库连接方面,项目可能使用了c3p0-config.xml配置文件来设置c3p0数据源。c3p0是一个开源的JDBC连接池,它提供了数据源管理、连接自动获取和释放等功能,提高了数据库操作的效率和稳定性。 【文件名称列表解析...

    jar包所在文件夹

    本话题将聚焦于“jar包所在文件夹”,并讨论其中包含的`json-lib jar包`、`mysql驱动jar包`以及`c3p0 jar包`。 首先,我们来详细了解一下`json-lib jar包`。JSON(JavaScript Object Notation)是一种轻量级的数据...

    hibernate-5.2.15. 最新jar包

    6. **事件和监听器**:Hibernate提供了丰富的事件系统,允许在特定操作前后添加自定义逻辑,如保存、更新、删除、加载等。 7. **多态性支持**:Hibernate支持多态查询,可以根据继承关系将子类对象一起查询出来,...

    基于Servlet的用户登录界面

    通过C3P0,项目可以有效地管理和复用数据库连接,提高系统资源利用率,避免频繁创建和关闭连接带来的性能开销。 同时,项目使用MySQL作为关系型数据库管理系统,存储用户信息。MySQL因其高效、稳定和开源特性,在...

    bigtest_版本3

    在"bigtest_版本3"中,使用c3p0作为数据源,可以实现数据库连接的高效管理和复用。 2. **JDBC**:Java Database Connectivity,是Java语言与各种数据库进行交互的一套标准API。开发者可以通过JDBC来执行SQL语句,...

    BookStoreSystem:一个算是前后端分离的项目,因为比较小,就直接把前端塞到了webapp目录

    使用了apache的dbutil通过结果集处理器直接转化为list,并使用c3p0连接池优化数据库访问。 前后通信前端使用ajax发送请求, 端使用jackson以结果类的形式将请求的数据封装为json返回。 缺点 购物车功能来不及实现了,...

    javaweb基础班day19_3客户关系管理系统(带分页的增删改查)

    - **配置与使用**:c3p0需要在项目的配置文件中设置相关参数,如最小连接数、最大连接数、初始化连接数等,然后在代码中通过DataSource获取数据库连接。 3. **分页查询**: - **原理**:为了提高用户体验和系统...

    基于Servlet开发的前后端分离图书管理系统.zip

    可能还涉及到连接池技术,如C3P0或Druid,提高数据库资源的管理和复用。 ### 6. RESTful API设计 为了实现前后端的有效通信,系统可能遵循REST(Representational State Transfer)架构风格设计API。RESTful API以...

    往届师兄师姐面试真题收集(Java相关岗位)

    配置C3P0连接池,然后通过C3P0的工具类获取连接,使用完后再关闭连接,以实现数据库连接的高效复用。 9. **JSP与Servlet的区别**:JSP主要负责视图展示,Servlet则负责控制逻辑。JSP最终会被编译成Servlet执行。每...

Global site tag (gtag.js) - Google Analytics