DBCP串連池簡介,dbcp簡介
DBCP串連池簡介
1、資料庫連接基礎
資料庫連接池基礎主要包括以下三個方面的內容:資料庫連接池的基本概念、資料庫連接池的工作原理、Java開源的串連池。下面將從這三個方面一一介紹:
(1)資料庫連接池的基本概念
資料庫連接是一種關鍵的、有限的、昂貴的資源,這一點在多使用者的Web應用程式中體現得尤為突出。對資料庫連接的管理能顯著影響到整個應用程式的伸縮性和健壯性,影響到程式的效能指標。因此,資料庫連接池正是針對這個問題提出來的。
資料庫連接池負責分配、管理和釋放資料庫連接,它允許應用程式重複使用一個現有的資料庫連接,而不再是重建立立一個資料庫連接;釋放空閑時間超過最大空閑時間的資料庫連接,以避免因為沒有釋放資料庫連接而引起的資料庫連接遺漏。
資料庫連接池在初始化時將建立一定數量的資料庫連接放到串連池中,這些資料庫連接的數量是由最小資料庫連接數來設定的。無論這些資料庫連接是否被使用,串連池都將一直保持至少擁有這麼多的串連數量。串連池的最大資料庫連接數量限定了這個串連池能佔有的最大串連數,當應用程式向串連池請求的串連數超過最大串連數時,這些請求將被加入到等待隊列中。
(2)資料庫連接池的工作原理
下面請看一個具體的資料庫連接池工作原理:
圖中所示的是一個Web應用申請串連,實際上是從串連池裡取得一個串連,使用完串連後又返回到該串連池容器中。
(3)Java開源的串連池
由於Java的開源特性,產生了許多Java開源的串連池。例如以下資料庫連接池:Jakarta DBCP、C3P0、Proxool、DBPool等。
其中,Jakarta DBCP具體是:一個依賴Jakarta commons-pool對象池的資料庫連接池,DBCP可以直接第在應用程式中使用。這也是本文所要介紹的技術要點。
C3P0具體是:一個開放原始碼的JDBC串連池,它在lib目錄中與Hibernate一起發布,包括了實現jdbc3和jdbc2擴充規範說明的Connection池和Statement池的DataSources對象。
此處就簡單說明一下一上兩個串連池,其他串連池此處就不說明了(⊙o⊙)哦。
2、DBCP串連池基礎簡介
DBCP是Java開源串連池中最常用的一種,它一般應用在資料庫使用非常頻繁的系統中,可以處理資料庫連接的大量請求,是做大型網站的首選資料庫配置。
在DBCP建立的過程中,它也遵循普通串連池的建立機制。例如使用Struts架構開發時,如果在struts-config.xml中配置了DBCP組件,則在Struts啟動時就會建立DBCP串連池。
3、Struts架構中配置DBCP串連池樣本
以下是使用Struts架構時,其中struts-config.xml檔案中配置DBCP組件的範例程式碼:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
"http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config> <!-- 配置資料來源 --> <data-sources> <data-source type="org.apache.commons.dbcp.BasicDataSource"> <set-property property="driverClassName" value="com.mysql.jdbc.Driver" /> <set-property property="url" value="jdbc:mysql://localhost:3306/demo" /> <set-property property="username" value="root" /> <set-property property="password" value="" /> <set-property property="maxActive" value="10" /> <set-property property="maxWait" value="5000" /> <set-property property="defaultAutoCommit" value="false" /> <set-property property="defaultReadOnly" value="false" /> <set-property property="validationQuery" value="SELECT COUNT(*) FROM user" /> </data-source> </data-sources></struts-config>