天天看點

JDBC連接配接池之C3P0

1.導入jar包

c3p0-0.9.1.jar

mchange-commons-java-0.2.3.4(注:該jar包是c3p0資料庫連接配接池的輔助包,沒有這個包系統啟動的時候會報classnotfoundexception,這是c3p0-0.9.2版本後分離出來的包,0.9.1的時候還是一個包就搞定的)

2.擷取連接配接

C3P0有三種方式 實作。

1.自己動手寫代碼,實作資料源

例如:在類路徑下配置一個屬性檔案,config.properties,内容如下:

driverClass=xxx

jdbcUrl=xxx

user=xxx

password=xxx

...

然後代碼中實作

Properties props = new Properties();
InputStream in = Thread.class.getResourceAsStream("config.properties");
props.load(in);
in.close();
 
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass(props.getProperty("driverClass"));
cpds.setJdbcUrl(props.getProperty("jdbcUrl"));
cpds.setUser(props.getProperty("user"));
cpds.setPassword(props.getProperty("password"));
      

  

2.配置預設的熟悉檔案

類路徑下提供一個c3p0.properties檔案(不能改名)

配置如下:

c3p0.driverClass=com.mysql.jdbc.Driver

c3p0.jdbcUrl=jdbc:mysql://localhost/paper_tag

c3p0.user=root

c3p0.password=admin

3.路徑下提供一個c3p0-config.xml檔案 

<c3p0-config>
  <default-config>   
    <property name="user">root</property>
    <property name="password">java</property>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</property>
 
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </default-config>
 
  <named-config name="mySource">
    <property name="user">root</property>
    <property name="password">java</property>
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/jdbc</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>
      

這裡我采用的是最簡單的第二種方式。

package c3p0;

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

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Util {
	
	private static ComboPooledDataSource ds = new ComboPooledDataSource();
	
	public static Connection getConn() {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}
	
	

}
      

對于這種配置,如果classpath中有c3p0.properties的配置檔案,代碼中不需要設定連接配接資訊,直接new ComboPooledDataSource(),他會自動讀取配置檔案中的配置。當然也可以使用c3p0-config.xml檔案配置連接配接資訊,使用xml作為配置資訊的話,comboPoolDataSource還可以接受一個String參數,這個參數的名稱是在c3p0-config.xml檔案中配置,這就意味着我們可以在xml檔案中可有都多個資料庫源連接配接資訊,比如可以是mysql,oracle的。

繼續閱讀