zoukankan      html  css  js  c++  java
  • java 数据库连接池和普通连接 对比

    自由自在,闲话省略

    包:c3p0-***.jar

    mchange-commons-java-**.jar

    ojdba.jar

    mysql-connector.jaava-**bin.jar

    ConnectionManager

    package com.adao.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("coll_platform");     //用户名
            dataSource.setPassword("coll_platform"); //密码
            dataSource.setJdbcUrl("jdbc:oracle:thin:@192.168.127.156: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;
        }
    }

    ConnectionDemo

    package com.adao.c3p0;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;
      
    public class ConnectionDemo {
      
        public static void main(String[] args) throws SQLException, ClassNotFoundException {
            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_TERMINAL");
                    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));
            }
            Connection con = null;// 创建一个数据库连接
            System.out.println("不使用连接池................................");
            for (int i = 0; i < 20; i++) {
                long beginTime = System.currentTimeMillis();
                //oracle
                Class.forName("oracle.jdbc.driver.OracleDriver");// 加载Oracle驱动程序
                String url = "jdbc:oracle:thin:@192.168.127.156:1521:ORCL";
                String user = "coll_platform";
                String password = "coll_platform";
                con = DriverManager.getConnection(url, user, password);// 获取连接
    
    
                // mysql
                // MysqlDataSource mds = new MysqlDataSource();
                // mds.setURL("jdbc:mysql://localhost:3306/zww");
                // mds.setUser("root");
                // mds.setPassword("123456");
                // Connection conn = mds.getConnection();
                try {
                    PreparedStatement pstmt = con.prepareStatement("select * from T_TERMINAL");
                    ResultSet rs = pstmt.executeQuery();
                    while (rs.next()) {
                                        // do nothing...
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    try {
                        con.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                long endTime = System.currentTimeMillis();
                System.out.println("第" + (i + 1) + "次执行花费时间为:"
                                    + (endTime - beginTime));
            }
      
        }
    }

    执行结果

    flawless

  • 相关阅读:
    LAMP 服务器环境
    LAMP 环境搭建
    为何程序员总喜欢写技术博客,看完恍然大悟...
    沉入海底2年的微软数据中心浮出水面:故障率只有陆地上的1/8,除了长点贝类和藻类完全没问题...
    真正毁掉一个人的,是“打工者心态”
    包装严重的 IT 行业,作为面试官,我是如何甄别应聘者的包装程度
    一名测试实习生的心路历程(二)
    7年赚的2个亿,数学家6年就花光了,全砸在自家的房子上
    “蚂蚁牙黑,蚂蚁呀吼”一夜间火遍全网?别忽略了潜在风险
    面试常问的 25+ 个 Linux 命令
  • 原文地址:https://www.cnblogs.com/adao21/p/13223396.html
Copyright © 2011-2022 走看看