• C3P0--数据库连接池


    1.简介

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展

    c3p0与dbcp区别

      dbcp没有自动回收空闲连接的功能

      c3p0有自动回收空闲连接功能

    2.加入 C3P0 数据源

       1) 加入c3po和数据库驱动的jar包,其中c3p0.jar的网址

            c3p0-0.9.5.jar,mysql-connector-java-5.0.3-bin.jar

       2)加c3po配置文件,可以参考网址http://www.mchange.com/projects/c3p0/或文件目录c3p0-0.9.5.bin.zipc3p0-0.9.5docindex.html

          下的Appendix B: Configuation Files, etc. c3p0-config.xml的例子

         如下为一个简单的例子:

    <?xml version="1.0" encoding="UTF-8"?>
    <
    c3p0-config> <!-- This app is massive! --> <named-config name="mvcApp"> <!-- 连数据库的基本信息 --> <property name="user">root</property> <property name="password">root</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///test</property> <!-- 连接池基本信息 --> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">10</property> <property name="maxPoolSize">50</property> <!-- mvcApp adopts a different approach to configuring statement caching --> <property name="maxStatements">20</property> <property name="maxStatementsPerConnection">5</property> </named-config> </c3p0-config>

     在JbbcUtils工具类中获取数据库连接如下:

    package com.milan.db;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    /**
     * jdbc操作工具类
     * @author milan
     * @TODO
     * @Date 2015-1-18
     */
    public class JdbcUtils {
        
        private static DataSource dataSource = null;
        
        static{
            dataSource = new ComboPooledDataSource("mvcApp");//与定义的named-config的name属性值相同
        }
    
        /**
         * 关闭数据库连接
         * @param conn
         */
        public static void releaseConnection(Connection conn){
            try{
                if(conn != null){
                    conn.close();
                }
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
        
        /**
         * 获取数据源的一个Connection对象
         * @return
         * @throws SQLException 
         */
        public static Connection getConnection() throws SQLException{
            return dataSource.getConnection();
        }
    }

    写完后,用Junit测试getConnection(),报如下错误:

        

      发现引入:mchange-commons-java-0.2.9.jar就好了

      如此c3p0的环境就搭好了

      在写好BaseDao后测试数据添加,发现一个问题:

          后台添加数据时,数据中包含中文字符,添加到数据库时该中文字符均显示???

          此时,数据库编码也设置为utf-8,数据表也设置编码为utf-8

     最后解决方法:

        jdbcUrl后添加编码设置:

    <property name="jdbcUrl">jdbc:mysql:///test?characterEncoding=UTF-8</property>
  • 相关阅读:
    Spring service本类中方法调用另一个方法事务不生效问题(转载)
    JVM垃圾收集器
    LInkedHashMap实现最近被使用(LRU)缓存
    HTML模板与iframe框架
    Mybatis中常用sql语句
    从零到一: 后端接口文档
    Mysql日期处理
    Java-集合框架与数组的实际应用-组装Json字符串
    Mysql查询之 指定顺序排序
    Eclipse中复制项目后,怎么更改项目名等相关配置?
  • 原文地址:https://www.cnblogs.com/javamilan/p/4232177.html
Copyright © 2020-2023  润新知