在配置好hibernate連接數據庫環境的前提下,我們進行如下操作就可以搭建好hibernate中使用c3p0數據源的環境了。
1). 導入 jar 包:
hibernate-release-4.2.4.Final\lib\optional\c3p0\*.jar(這裏面一般有3個jar包 )
c3p0-0.9.2.1.jar
hibernate-c3p0-4.2.15.Final.jar
mchange-commons-java-0.2.3.4.jar
2). 加入配置(hibernate.cfg.xml文件中添加):
hibernate.c3p0.max_size: 數據庫連接池的最大連接數
hibernate.c3p0.min_size: 數據庫連接池的最小連接數
hibernate.c3p0.acquire_increment: 當數據庫連接池中的連接耗盡時, 同一時刻獲取多少個數據庫連接
hibernate.c3p0.timeout: 數據庫連接池中連接對象在多長時間沒有使用過後,就應該被銷燬
hibernate.c3p0.idle_test_period: 表示連接池檢測線程多長時間檢測一次池內的所有鏈接對象是否超時.
連接池本身不會把自己從連接池中移除,而是專門有一個線程按照一定的時間間隔來做這件事,
這個線程通過比較連接對象最後一次被使用時間和當前時間的時間差來和 timeout 做對比,進而決定是否銷燬這個連接對象。
hibernate.c3p0.max_statements: 緩存 Statement 對象的數量
下面是加入配置的原版代碼:
下面代碼添加在hibernate.cfg.xml文件中
</pre><pre name="code" class="html"><!-- 配置c3p0數據源 -->
<property name="hibernate.c3p0.max_size">10</property>
<property name="hibernate.c3p0.min_size">2</property>
<property name="c3p0.acquire_increment">2</property>
<property name="c3p0.idle_test_period">2000</property>
<property name="c3p0.timeout">2000</property>
<property name="c3p0.max_statements">10</property>
我們可以通過編寫測試用例來查看是否搭建成功:
創建junit測試用例,在測試用例中複寫dowork方法來調用jdbc中的connection對象,然後打印出來
@Test
public void testDoWork(){
session.doWork(new Work() {
@Override
public void execute(Connection connection) throws SQLException {
System.out.println(connection);
//調用存儲過程.
}
});
}
若打印了的出現了下面帶有c3p0的代碼就表示現在已經搭建成功。
com.mchange.v2.c3p0.impl.NewProxyConnection@5848ddac