天天看點

資料源c3p0的使用

首先我們先準備c3p0的jar包,我這裡的jar包名字叫

c3p0-0.9.1.2.jar

我們一共有三種配置方式,現在先用代碼java列出來

import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import org.junit.Test;

import com.mchange.v2.c3p0.ComboPooledDataSource;

/**
 * c3p0
 * 性能好,開源以後一般用它
 */
public class Demo1 {
	/**
	 * 代碼配置
	 * @throws PropertyVetoException
	 * @throws SQLException
	 */
//	@Test
	public void connPool1() throws PropertyVetoException, SQLException {
		// 建立連接配接池對象
		ComboPooledDataSource dataSource = new ComboPooledDataSource();
		// 對池進行四大參數的配置
		dataSource.setDriverClass("oracle.jdbc.driver.OracleDriver");
		dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
		dataSource.setUser("chj");
		dataSource.setPassword("chj");	
		// 池配置
		//每次新增多少連接配接
		dataSource.setAcquireIncrement(5);
		//初始連接配接數多少
		dataSource.setInitialPoolSize(20);
		//最少連接配接數
		dataSource.setMinPoolSize(2);
		//最大連接配接數
		dataSource.setMaxPoolSize(50);
		Connection con = dataSource.getConnection();
		System.out.println(con);
		con.close();
	}
	
	/**
	 * 配置檔案的預設配置
	 * @throws SQLException 
	 */
//	@Test
	public void connPool2() throws SQLException{
		/**
		 * 在建立連接配接池對象時,這個對象就會自動加載配置檔案!不用我們來指定
		 */
		ComboPooledDataSource dataSource  = new ComboPooledDataSource();
		
		Connection con = dataSource.getConnection();
		System.out.println(con);
		con.close();
	}
	
	/**
	 * 使用命名配置資訊
	 * @throws SQLException
	 */
	@Test
	public void connPool3() throws SQLException{
		/**
		 * 構造器的參數指定命名配置元素的名稱!
		 * <named-config name="oracle-config"> 
		 */
		ComboPooledDataSource dataSource  = new ComboPooledDataSource("oracle-config");
		
		Connection con = dataSource.getConnection();
		System.out.println(con);
		con.close();
	}
}
           

而配置檔案方法的配置資訊如下,我這是隻是連接配接oracle而已,當然也可以連接配接其他的資料庫

c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<!-- 這是預設配置資訊 -->
	<default-config> 
		<!-- 連接配接四大參數配置 -->
		<property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb3</property>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="user">root</property>
		<property name="password">123</property>
		<!-- 池參數配置 -->
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</default-config>

	<!-- 專門為oracle提供的配置資訊 -->
	<named-config name="oracle-config"> 
		<property name="jdbcUrl">jdbc:oracle:thin:@localhost:1521:orcl</property>
		<property name="driverClass">oracle.jdbc.driver.OracleDriver</property>
		<property name="user">luowg</property>
		<property name="password">luowg</property>
		<!-- 連接配接不足時,會自動建立連接配接,這裡指定會建立多少連接配接 -->
		<property name="acquireIncrement">3</property>
		<property name="initialPoolSize">10</property>
		<property name="minPoolSize">2</property>
		<property name="maxPoolSize">10</property>
	</named-config>
</c3p0-config>
           

上面的隻是個例子,教如何使用。

但在實際的javaWeb開發中,我們的資料源一般都受到spring的管理,是以我們在spring是怎麼注入的呢?

<!-- 配置資料源 -->
	<!-- 導入資源檔案 -->
	<context:property-placeholder location="classpath:/config/database.properties"/>
	
	<!-- c3p0 資料源 -->
 	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="driverClass" value="${jdbc.driver}"></property>
		<property name="jdbcUrl" value="${jdbc.url}"></property>
		<property name="initialPoolSize" value="5"></property>
		<property name="minPoolSize" value="5"/>
	    <property name="maxPoolSize" value="10"/>
	    <property name="maxIdleTime" value="600"/>
	    <property name="maxStatements" value="0"/>
	</bean>
           

我的資源檔案database.properties如下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/ordro?useUnicode\=true&characterEncoding\=utf-8&autoReconnect\=true&failOverReadOnly\=false
jdbc.username=chj
jdbc.password=chj
jdbc.initPoolSize=5
jdbc.maxPoolSize=10
           

具體可以看我的文章spring和mybatis的結合,裡面就是用到了c3p0資料源。

文章連結:http://blog.csdn.net/qq_18895659/article/details/51772577

資料源c3p0的使用