C3P0連接池的簡單介紹

c3p0是一個易於使用的庫,用於通過JNDI可綁定的數據源(包括實現連接和語句池的數據源)擴展傳統的(基於DriverManager的)JDBC驅動程序,如jdbc3規範和jdbc2 std擴展所述。

C3P0連接池簡介:

C3P0地址:https://sourceforge.net/projects/c3p0/?source=navbar

C3P0是一個開源的連接池。Hibernate框架,默認推薦使用C3P0作爲連接池實現。

C3P0的jar包:c3p0-0.9.1.2.jar

C3P0常用的配置參數解釋:

參數 說明
initialPoolSize 剛創建好連接池的時候連接數量
maxPoolSize 連接池中最多可以放多少個連接
checkoutTimeout 連接池中沒有連接時最長等待時間
maxIdleTime 連接池中的空閒連接多久沒有使用就會回收。默認是0,0表示不回收

API介紹:

com.mchange.v2.c3p0.ComboPooledDataSource類表示C3P0的連接池對象,常用2種創建連接池的方式:

1.無參構造,使用默認配置

2.有參構造,使用命名配置

  1. public ComboPooledDataSource()
    無參構造使用默認配置(使用xml中default-config標籤中對應的參數)
  2. public ComboPooledDataSource(String configName)
    有參構造使用命名配置(configName:xml中配置的名稱,使用xml中named-config標籤中對應的參數)
  3. public Connection getConnection() throws SQLException
    從連接池中取出一個連接

C3P0的使用步驟:
    1.下載jar包,導包

c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar

    2.配置使用的xml配置文件,必須src目錄下(javaSE工程),文件名必須叫c3p0-config.xml 

<c3p0-config>
  <!-- 使用默認的配置讀取連接池對象 -->
  <default-config>
  	<!--  連接參數 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/JDBC</property>
    <property name="user">root</property>
    <property name="password">root</property>
    
    <!-- 連接池參數 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">10</property>
    <property name="checkoutTimeout">3000</property>
  </default-config>

  <named-config name="otherc3p0"> 
    <!--  連接參數 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/JDBC</property>
    <property name="user">root</property>
    <property name="password">root</property>
    
    <!-- 連接池參數 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">6666</property>
    <property name="checkoutTimeout">1000</property>
  </named-config>
  
  <named-config name="abc"> 
    <!--  連接參數 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/JDBC</property>
    <property name="user">root</property>
    <property name="password">root</property>
    
    <!-- 連接池參數 -->
    <property name="initialPoolSize">5</property>
    <property name="maxPoolSize">6</property>
    <property name="checkoutTimeout">1000</property>
  </named-config>
  
</c3p0-config>

    3.創建核心類對象ComboPooledDataSource
    4.調用數據源的方法,Connection getConnection() 

package C3p0_01;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class C3p0Demo {
    public static void main(String[] args) throws SQLException {
        //3.創建核心類對象
        //在創建c3p0核心類對象時,自動去src目錄中,找指定的配置文件c3p0-config.xml,自動解析得到數據庫連接四要素
 
        //可以使用其實現類進行核心類對象的創建
//       ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();

        //可以使用其接口的多態核心類對象的創建
        DataSource dataSource = new ComboPooledDataSource();
        for (int i = 0; i < 11; i++) {
            Connection connection = dataSource.getConnection();
            System.out.println(i+"_"+connection);
            if(i == 5){
                connection.close();//數據庫改寫了連接的close方法,變成了返回連接池
            }
        }
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章