用c3p0数据库链接池链接mysql数据库

所需架包:JDBC链接mysql数据库的驱动包(在mysql官网上有)、c3p0的架包c3p0-0.9.5.jar、mchange-commons-java-0.2.9.jar

在src下配置名字为c3p0-config.xml文件

文件内容为

  <?xml version="1.0" encoding="UTF-8"?>
<!-- 这是一个c3p0数据库链接池的配置文件 -->
<c3p0-config>
  <default-config>
   <!--c3p0将建一张名为conn_Test的空表,并使用其自带的查询语句进行测试。如果定义了这个参数那么
        属性preferredTestQuery将被忽略。你不能在这张Test表上进行任何操作,它将只供c3p0测试
       使用。Default: null-->
    <property name="automaticTestTable">con_test</property>
  <!--当连接池用完时客户端调用getConnection()后等待获取新连接的时间,超时后将抛出
SQLException,如设为0则无限期等待。单位毫秒。Default: 0 -->
    <property name="checkoutTimeout">30000</property>
    <!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
    <property name="idleConnectionTestPeriod">30</property>
    <!--初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
    <property name="initialPoolSize">10</property>
    <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
    <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>

  <!-- This app is massive! -->
  <named-config name="intergalactoApp">
    <!--用户名  -->
    <property name="user">root</property>
    <!-- 密码 -->
    <property name="password">123456</property>
    <!--mysql驱动类 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <!--获取链接地址  -->
    <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/newcxpt</property>
    <property name="acquireIncrement">50</property>
    <property name="initialPoolSize">100</property>
    <property name="minPoolSize">50</property>
    <property name="maxPoolSize">1000</property>
     
    <!-- intergalactoApp adopts a different approach to configuring statement caching -->
    <property name="maxStatements">0</property>
    <property name="maxStatementsPerConnection">5</property>

    <!-- he's important, but there's only one of him -->
    <user-overrides user="master-of-the-universe">
      <property name="acquireIncrement">1</property>
      <property name="initialPoolSize">1</property>
      <property name="minPoolSize">1</property>
      <property name="maxPoolSize">5</property>
      <property name="maxStatementsPerConnection">50</property>
    </user-overrides>
  </named-config>
</c3p0-config>

 

数据库链接的工具类

/**
 * JDBCTools.java 1.0 2015-10-22
 * 维信科技版权所有
 */
package com.tit.edu.util;

import java.sql.Connection;
import java.sql.SQLException;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * 类功能(作用)说明: 与数据库操作有关的类
 * @author sunjianning
 * @version 1.0
 */
public class JDBCTools {

    private static  DataSource dbsource = null;
    
    static {
        dbsource = new ComboPooledDataSource("intergalactoApp");
    }//使用静态代码块初始化datasourse
    
    /**
     *
     * 方法功能(作用)说明:利用C3p0获取数据库链接
     * 数据库表: 无
     * @return 数据库链接
     * @throws SQLException
     */
    public static Connection getConnection () throws SQLException{
        
        return dbsource.getConnection();
        
    }
    
}

 数据库连接池的原理:

  连接池基本的思想是在系统初始化的 时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用 户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控 制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况 等。




   

posted @ 2015-10-22 19:32  千古风流人物  阅读(282)  评论(0编辑  收藏  举报