今天就跟大家聊聊有關c3p0數(shù)據(jù)庫連接池如何在Java項目中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
在連城等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站制作、網(wǎng)站設計 網(wǎng)站設計制作按需搭建網(wǎng)站,公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,品牌網(wǎng)站制作,營銷型網(wǎng)站,外貿(mào)營銷網(wǎng)站建設,連城網(wǎng)站建設費用合理。c3p0是什么
c3p0的出現(xiàn),是為了大大提高應用程序和數(shù)據(jù)庫之間訪問效率的。
它的特性:
編碼的簡單易用
連接的復用
連接的管理
說到c3p0,不得不說一下jdbc本身,c3p0愿意就是對數(shù)據(jù)庫連接的管理,那么原有的概念還是得清晰:DriverManager、Connection、StateMent、ResultMent。
jdbc:java database connective這套API,不用多說,是一套用于連接各式dbms或連接橋接器的api,兩個層級:上層供應用方調(diào)用api,下層,定義了各個dbms的spi的api(具體文檔見:這里)。
主要要提的是:datasource、DriverManager,想到哪兒寫到哪兒,datasource是更高級一點的api,原因在于相對對應用來說更透明。
Connection:同dbms的邏輯鏈接,類似于session管理概念, SQL statements are executed and results are returned within the context of a connection.
jdbc的概念就到這里,平時用得比較多。
c3P0的配置
c3p0的bean配置如下:
還有一些配置選項,后續(xù)詳細說明??梢奵3p0的bean引用使用的是:ComboPooledDataSource,該類結構如下:
以上類圖都不是很完全,不過大體能表達出類之間的原理:
1、bean:ComboPooledDataSource的父類:AbstractPoolBackedDataSource有一個poolmanager字段,存儲著對pool管理器
2、獲取ds.getConnection()鏈接對象時,內(nèi)部使用getPoolManger()獲取C3p0ConnectionPooledManager(mgr)對象,該manager管理著pool對象:C3P0PooledConnectionPool對象,mgr.getPool().checkoutPooledConnection()
3、自此該connection已經(jīng)被獲取到了
4、讓我們看看該connection的真實面目吧:
ProxyConnection。
5、因此其實原理是:
從pool里獲取到的connection,是proxy包裝的connection,而對connection的釋放或者重用,是pool的管理責任:初始化池大小,維護池的大?。╡xpand或shrink),管理unused、expired、checkout、checkin連接。
真正底層的連接是jdbc自己的連接,而c3p0的管理部分,基本上使用的是synchronized關鍵字,使用timerTask定時器工作。
看完上述內(nèi)容,你們對c3p0數(shù)據(jù)庫連接池如何在Java項目中使用有進一步的了解嗎?如果還想了解更多知識或者相關內(nèi)容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。