程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> DBCP連接池簡介,dbcp簡介

DBCP連接池簡介,dbcp簡介

編輯:JAVA綜合教程

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>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved