关闭

C3p0数据库连接池配置详解与数据库连接建立

标签: c3p0c3p0配置c3p0建立数据库连接数据库连接池
10020人阅读 评论(0) 收藏 举报
分类:

1.C3p0属性文件配置详解

#jdbc基本信息

driverClass=com.mysql.jdbc.Driver

jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8

#MYSQL用户名

user=root

#MYSQL密码

password=root

 

# c3p0连接池中保留的最小连接数

c3p0.minPoolSize=3

# 连接池中保留的最大连接数。Default: 15

c3p0.maxPoolSize=25

# 初始化时获取三个连接,取值应在minPoolSizemaxPoolSize之间。Default: 3

c3p0.initialPoolSize=3

# 当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3

c3p0.acquireIncrement=3

#定义在从数据库获取新连接失败后重复尝试的次数。Default: 30

c3p0.acquireRetryAttempts=60

# 两次连接中间隔时间,单位毫秒。Default: 1000

c3p0.acquireRetryDelay=1000

# 连接关闭时默认将所有未提交的操作回滚

c3p0.autoCommitOnClose=false

# 当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出SQLException,如设为0则无限

c3p0.checkoutTimeout=3000

# 120秒检查所有连接池中的空闲连接。Default: 0

c3p0.idleConnectionTestPeriod=120

# 最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 

c3p0.maxIdleTime=600

# 如果设为true那么在取得连接的同时将校验连接的有效性。Default: false

c3p0.testConnectionOnCheckin=false

# 如果maxStatementsmaxStatementsPerConnection均为0,则缓存被关闭。Default: 0

c3p0.maxStatements=8

# maxStatementsPerConnection定义了连接池内单个连接所拥有的最大缓存statements数。Default: 0

c3p0.maxStatementsPerConnection=5

# c3p0将建一张名为Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么属性preferredTestQuery将被忽略。Default: null-->

c3p0.automaticTestTable=TEST

# 获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效保留,并在下次调用getConnection()的时候继续尝试获取连接。

# 如果设为true,那么在尝试获取连接失败后该数据源将申明已断开并永久关闭。Default: false-->

c3p0.breakAfterAcquireFailure=false

# c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能通过多线程实现多个操作同时被执行。Default: 3

c3p0.numHelperThreads=3

 

2.建立数据源连接工具类-C3p0ConnUtil

package com.c3p0;

import java.io.FileInputStream;

import java.sql.Connection;

import java.sql.SQLException;

import java.util.Properties;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.DataSources;

 

/**

 * c3p0数据源配置

 * @author pjliang

 *

 */

public classC3p0ConnUtil {

 

       private static final String JDBC_DRIVER = "driverClass";

       private static final String JDBC_URL = "jdbcUrl";

       private static final String prefix = "c3p0.";

    

       private static DataSource ds;

      

       /**

        * 初始化连接池代码块

        */

       static {

           initDBSource();

       }

    

       /**

        * 初始化c3p0连接池

        */

       private static final void initDBSource() {

           Properties c3p0Properties = new Properties();

           try {

               // 加载配置文件

               String classpath = C3p0ConnUtil.class.getResource("/").getPath();

               //c3p0资源文件真实路径

               String websiteURL =(classpath.replace("/build/classes", "").replace("%20"," ").replace("classes/","")+ "c3p0.properties").replaceFirst("/", "");

               FileInputStream in = newFileInputStream(websiteURL);

               c3p0Properties.load(in);

           } catch (Exception e) {

               e.printStackTrace();

           }

           //加载MYSQL驱动类

           String drverClass =c3p0Properties.getProperty(JDBC_DRIVER);

           if (drverClass != null) {

               try {

                 

                   Class.forName(drverClass);

               } catch (ClassNotFoundException e) {

                   e.printStackTrace();

               }

           }

           //常规数据库连接属性

           Properties jdbcProperties = new Properties();

           //连接池配置属性

           Properties c3p0PooledProp = new Properties();

           for (Object key : c3p0Properties.keySet()) {

               String skey = (String) key;

               if (skey.startsWith(prefix)) {

                 c3p0PooledProp.put(skey,c3p0Properties.getProperty(skey));

               } else {

                   jdbcProperties.put(skey,c3p0Properties.getProperty(skey));

               }

           }

           try {

               //建立连接池

               DataSource unPooled = DataSources.unpooledDataSource(c3p0Properties.getProperty(JDBC_URL),jdbcProperties);

               ds = DataSources.pooledDataSource(unPooled,c3p0PooledProp);

           } catch (SQLException e) {

               e.printStackTrace();

           }

       }

       /**

        * 获取数据库连接对象

        *

        * @return数据连接对象

        * @throws SQLException

        */

       public static synchronized ConnectiongetConnection() throwsSQLException {

           final Connection conn = ds.getConnection();

           //指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。

          conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

           return conn;

       }   

}

0
2
查看评论

C3P0连接池的配置与使用

1、下载c3p0-0.9.1.2.jar 下载地址:http://download.csdn.net/detail/chunxiaqiudong5/9661922 2、添加配置文件c3p0-config.xml 3、配置文件内容如下: ...
  • chunxiaqiudong5
  • chunxiaqiudong5
  • 2016-10-23 23:31
  • 5142

C3P0连接池的三种实现方式

用到的jar包:                  mysql-connector-java-5.1.30-bin.jar            ...
  • soyuone
  • soyuone
  • 2016-06-01 11:05
  • 14783

数据库连接池C3P0最常用配置

数据库连接池C3P0框架是个非常优异的开源jar,高性能的管理着数据源,这里只讨论程序本身负责数据源,不讨论容器管理。   一、实现方式: C3P0有三种方式实现: 1.自己动手写代码,实现数据源 例如:在类路径下配置一个属性文件,config.properties,内容如下: ...
  • AlbertFly
  • AlbertFly
  • 2016-05-19 20:33
  • 2096

C3P0的三种配置方式以及基本配置项详解

c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2014-10-31 15:57
  • 11687

SpringMVC+MyBatis+C3P0连接池详细配置

关于SpringMVC+MyBatis+C3P0连接池结合的框架做了一个配置: 首先导入相关的架包: 其中有些可以删除,像commons-fileupload-1.2.1.jar是做上传用的,我们可以扔掉,还有一些看自己所需吧。 配置web.xml: CharacterEncoding...
  • qq_15934149
  • qq_15934149
  • 2015-05-18 09:24
  • 11344

C3P0连接池配置

C3P0是一个开源的JDBC连接池。 在Spring中,C3P0的一些配置,介绍如下(只列了一部分,不是全部)
  • caihaijiang
  • caihaijiang
  • 2011-10-04 09:46
  • 93495

c3p0-----开源JDBC连接池使用及配置

首先来个连接,介绍一下各种连接池的区别及性能差别(boneCP较新,性能较高)连接池区别c3p0是一个开源JDBC连接池,假如英文好的话完全可以c3p0 - JDBC3 Connection and Statement Pooling这里用到的version为c3p0-0.9.5.2:所需的jdk为...
  • linfujian1999
  • linfujian1999
  • 2017-04-01 14:11
  • 610

MyBatis配置C3P0连接池

以下是摘抄自MyBatis官方文档的内容: 通过需要实现接口 org.apache.ibatis.datasource.DataSourceFactory , 也可使用任何第三方数据源,: public interface DataSourceFactory { void setPrope...
  • snakeMoving
  • snakeMoving
  • 2017-01-02 15:24
  • 5342

数据库连接池的作用及c3p0的详解

1.JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:   在主程序(如servlet、beans)中建立数据库连接。 进行sql操作 断开数据库连接。 这种模式开发,存在的问题: 普通的JDBC数据库连接使用 Driv...
  • qq441568267
  • qq441568267
  • 2016-10-28 00:43
  • 10385

C3P0数据库连接池配置

c3p0的配置方式分为三种,分别是 1.setters一个个地设置各个配置项 2.类路径下提供一个c3p0.properties文件 3.类路径下提供一个c3p0-config.xml文件 1.setters一个个地设置各个配置项 这种方式最繁琐,形式一般是这样: 01 Prope...
  • LiJi19910313
  • LiJi19910313
  • 2015-12-02 10:12
  • 456
    个人资料
    • 访问:84800次
    • 积分:1142
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:1篇
    • 译文:1篇
    • 评论:5条
    最新评论