zoukankan      html  css  js  c++  java
  • JDBC数据源连接池(2)---C3P0

    我们接着《JDBC数据源连接池(1)---DBCP》继续介绍数据源连接池。

    首先,在Web项目的WebContent--->WEB-INF--->lib文件夹中添加C3P0的jar包。

    其次,编写C3P0的xml配置文件c3p0-config.xml ,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
        <default-config>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/itszt2</property>
            <property name="user">root</property>
            <property name="password">2017</property>
            <property name="automaticTestTable">con_test</property>
            <property name="checkoutTimeout">30000</property>
            <property name="idleConnectionTestPeriod">30</property>
            <property name="initialPoolSize">10</property>
            <property name="maxIdleTime">30</property>
            <property name="maxPoolSize">100</property>
            <property name="minPoolSize">10</property>
            <property name="maxStatements">200</property>
            <user-overrides user="test-user">
                <property name="maxPoolSize">10</property>
                <property name="minPoolSize">1</property>
                <property name="maxStatements">0</property>
            </user-overrides>
        </default-config> 
    </c3p0-config>
    

    再次,编写Util_3_JDBC_C3P0工具类,代码如下:

    import com.mchange.v2.c3p0.ComboPooledDataSource;
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    /**
     * C3P0数据源连接池
     */
    public abstract class Util_3_JDBC_C3P0 {
        private static DataSource dataSource=null;
        //注册mysql驱动
        static {
            try {
                dataSource =new ComboPooledDataSource();
            } catch (Exception e) {
                throw new RuntimeException("数据源连接池失败!");
            }
        }
        /**
         * 打开与数据库的连接
         * @return 一个连接对象
         */
        public static Connection openConnection(){
            try {
                return dataSource.getConnection();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return null;
        }
        //释放资源
        public static void release(Connection connection, Statement statement, ResultSet resultSet){
            if(connection!=null){
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    最后,我们在com.itszt.demo文件夹中的LoginServlet.java的Servlet文件中,将产生Connection对象的方式修改为C3P0连接池方式即可。

    通常情况下,C3P0数据源连接池效率一般要高于DBCP。

  • 相关阅读:
    HDU 1102 Constructing Roads
    HDU 1285 确定比赛名次。
    最小生成树 HDU 各种畅通工程的题,prim和kru的模板题
    HDU Jungle Roads 1301 最小生成树、
    并查集小结(转)
    HDU hdu 2094 产生冠军 拓扑排序 判定环
    模运算(转)
    拓扑排序(主要是确定环和加法) HDU 2647 Reward
    HDU 1372 Knight Moves 简单BFS
    用计算机模型浅析人与人之间沟通方式 (一)如何谈话
  • 原文地址:https://www.cnblogs.com/lizhangyong/p/8117402.html
Copyright © 2011-2022 走看看