1. 程式人生 > 其它 >jdbc C3P0連線池

jdbc C3P0連線池

需要的jar包:

package demo;

import java.beans.PropertyVetoException;
import java.sql.Connection;

import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3p0 {
    @Test
    public void fun1() throws Exception {
        // 建立連線池物件
        ComboPooledDataSource ds = new ComboPooledDataSource();
        
// 四大引數 ds.setDriverClass("com.mysql.jdbc.Driver"); ds.setJdbcUrl("jdbc:mysql://localhost:3306/db1"); ds.setUser("root"); ds.setPassword("747699"); // 池配置 ds.setAcquireIncrement(5); // 自增數 ds.setInitialPoolSize(20); // 初始容量 ds.setMinPoolSize(2); //
最小連線數 ds.setMaxPoolSize(50); // 最大連線 Connection conn = ds.getConnection(); // 獲取連線 System.out.println(conn); conn.close(); // 歸還連線 } }

配置檔案

配置檔案必須命名為c3p0-config.xml並且放在src目錄下

<?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/db1</property> <property name="user">root</property> <property name="password">123456</property> <!-- 池配置 --> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> </default-config> <!-- 命名配置,在建立c3p0物件的時候在構造器中傳入name,例如下面的myApp --> <named-config name="myApp"> <property name="user">root</property> <property name="password">123456</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///users</property> <property name="initialPoolSize">10</property> <property name="maxIdleTime">30</property> <property name="maxPoolSize">100</property> <property name="minPoolSize">10</property> </named-config> </c3p0-config>

程式碼測試:

// 使用配置檔案建立池
    @Test
    public void fun2() throws Exception {
        // 建立池
        ComboPooledDataSource ds = new ComboPooledDataSource();
        // 命名建立池
        
        // 獲取連線
        Connection conn = ds.getConnection();
        System.out.println(conn);
        conn.close(); // 歸還連線
    }

如果在使用配置檔案建立池的時候,後面又自定義了配置,那麼後面的自定義的配置會覆蓋配置檔案的配置。

因為在建立的時候就是讀取配置檔案中的配置,後面自定義的將會覆蓋讀取的配置。