jdbc C3P0連線池
阿新 • • 發佈:2022-05-08
需要的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(); // 歸還連線
}
如果在使用配置檔案建立池的時候,後面又自定義了配置,那麼後面的自定義的配置會覆蓋配置檔案的配置。
因為在建立的時候就是讀取配置檔案中的配置,後面自定義的將會覆蓋讀取的配置。