【JavaWeb】69:c3p0和阿里巴巴的德魯伊

?今天是劉小愛自學(xué)Java的第69天涝滴。

感謝你的觀看绣版,謝謝你。

話不多說歼疮,開始今天的學(xué)習(xí):

image

這幾天的學(xué)習(xí)杂抽,什么Jdbc六步驟,Jdbc的封裝韩脏、sql注入與預(yù)編譯缩麸,自定義連接池。

本質(zhì)上一直在做一件事情赡矢,封裝工具類JdbcUtil杭朱,并一步一步將其優(yōu)化。

其實不需要我們自己封裝吹散,有現(xiàn)成的框架可以直接用弧械,但學(xué)習(xí)階段,自己將其過一遍也是很有必要的空民。

并且學(xué)的是這種封裝思想刃唐。昨天自己嘗試著用動態(tài)代理寫了一個連接池,當(dāng)然市面上也有幾個開源連接池:c3p0以及阿里的德魯伊界轩。

既然是開源画饥,那么經(jīng)過多版本的迭代,功能肯定更加地強(qiáng)大浊猾,使用起來也更加地方便抖甘。

一、c3p0連接池

看c3p0官網(wǎng):

image

個人習(xí)慣喜歡將瀏覽器設(shè)置成將網(wǎng)頁英文翻譯成中文葫慎,其實最好的還是要自己學(xué)著看英文文檔衔彻。

只能說這還需要一個比較長的時間去適應(yīng)。

①下載地址

點進(jìn)去可以下載最新版的c3p0幅疼。

②文檔說明

也就相當(dāng)于工具說明書,不然別人也不知道怎么使用c3p0昼接,那么具體如何使用爽篷?

1直接編寫代碼

完全就是看說明書,寫的很明白了:

image

①導(dǎo)包

將說明中的這兩個jar包導(dǎo)入開發(fā)工具IDEA即可慢睡。

②創(chuàng)建數(shù)據(jù)源

文檔中有編寫的代碼模板逐工,我們只需要復(fù)制過來修改其中的參數(shù)就可以了铡溪,這些參數(shù)都很熟悉。

也就是數(shù)據(jù)庫四大金剛:

  • mysql驅(qū)動路徑

  • 數(shù)據(jù)庫url路徑

  • 用戶名

  • 密碼

好泪喊,代碼編寫完畢棕硫。但是這種是代碼直接編寫。

前幾天學(xué)過配置文件袒啼,將這幾個常用參數(shù)放入配置文件里面哈扮,這樣代碼也能更具有可拓展性。

2使用配置文件

既然我們都能想到配置文件蚓再,那官方文檔中自然也會有它的說明滑肉,繼續(xù)看文檔:

image

①配置方法

其中有四種配置方式,最常見的是使用xml來配置摘仅。

②xml文件的設(shè)置

其中文件名要以“c3p0-config.xml”的命名規(guī)則靶庙,不然沒法運行,并且要放在IDEA的src路徑里面娃属。

至于其配置文件如何編寫六荒,一樣還是繼續(xù)套用模板,我們只需要修改其中的屬性矾端,網(wǎng)上一搜也會一大堆:

image

①數(shù)據(jù)庫連接參數(shù)

也就是數(shù)據(jù)庫四大金剛掏击,設(shè)置成自己的,不再贅述须床。

②連接池參數(shù)

這個在具體的項目中設(shè)置不同的參數(shù)铐料,其實理解起來也都是見名知意的,直接用軟件翻譯:

  • initialPoolSize:初始化連接池大小

  • maxIdleTime:最大空閑時間

  • maxPoolSize:連接池最大容量

  • minPoolSize:連接池最小容量

  • maxStatements:最大語句對象

3做一個測試

最后代碼編寫完了豺旬,做一個測試钠惩,同時也再回顧一遍連接數(shù)據(jù)庫的代碼:

image

①配置c3p0連接池

如果有xml配置文件,那么配置信息不用再逐個設(shè)置了族阅。

②從連接池中獲取連接

直接從c3p0連接池中獲取連接篓跛。

③預(yù)編譯及處理結(jié)果

這塊代碼也寫了好多遍了,不再贅述坦刀。

④釋放資源

close方法本來的意思是將連接銷毀掉愧沟,但事實上c3p0中close方法是將連接返回到連接池中而不是銷毀。

也就是說和昨天自定義的連接池一樣鲤遥,也將連接的close方法改造了沐寺。

我嘗試著看了下c3p0中的源碼,但實在是看不懂……

據(jù)說在c3p0中使用的是裝飾設(shè)計模式盖奈,我們昨天使用的是動態(tài)代理實現(xiàn)該需求混坞。

具體為何要用裝飾設(shè)計模式而不是動態(tài)代理也不清楚。

二、Druid

在全球最大的同性交友網(wǎng)站GitHub中可以找到Druid:

image

中文譯名:德魯伊究孕。這是阿里開源的一個數(shù)據(jù)庫連接池啥酱。

Druid是目前最好的數(shù)據(jù)庫連接池。在功能厨诸、性能镶殷、擴(kuò)展性方面,都超過其他數(shù)據(jù)庫連接池微酬。

想想一年一度的雙十一绘趋,春運的搶火車票也就能理解了。

image

①創(chuàng)建德魯伊對象

我們可以發(fā)現(xiàn)其API還是那些屬性設(shè)置得封,當(dāng)然這是最基礎(chǔ)的4個埋心,還有一些比如連接池大小什么的。

②配置文件druid.properties

同樣的道理忙上,可以將這些屬性放到一個配置文件里面拷呆,從而提高代碼的拓展性。c3p0中使用的是xml疫粥,德魯伊中使用properties茬斧。

配置文件完成,那如何使用它呢梗逮?

image

①工廠設(shè)計模式

DruidDataSourceFactory项秉,德魯伊數(shù)據(jù)源工廠,既然是工廠那通過它就可以直接創(chuàng)建數(shù)據(jù)源慷彤。

其中參數(shù)即為所編寫的配置文件娄蔼。

其余步驟也就是連接數(shù)據(jù)庫的常規(guī)操作了。

②從連接池中獲取連接

③預(yù)編譯及處理結(jié)果

④釋放資源

同樣的道理底哗,德魯伊中也改造了連接的close方法岁诉。

三、工具類的封裝優(yōu)化

今天學(xué)了連接池跋选,那么也可以把連接池封裝進(jìn)工具類JdbcUtil中涕癣,比如說我們使用德魯伊連接池:

image

①將德魯伊封裝進(jìn)JdbcUtil類中

通過工廠設(shè)計模式獲取數(shù)據(jù)源

②獲取連接封裝

通過德魯伊數(shù)據(jù)源獲取連接

③釋放資源

其中連接的close方法被改造了,并不是釋放連接而是將連接放回連接池前标。

優(yōu)化好JdbcUtil類后坠韩,再直接用JdbcUtil類獲取連接,實際上就是德魯伊連接池的連接炼列。

最后

謝謝你的觀看只搁。

如果可以的話,麻煩幫忙點個贊俭尖,謝謝你氢惋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子明肮,更是在濱河造成了極大的恐慌,老刑警劉巖缭付,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柿估,死亡現(xiàn)場離奇詭異,居然都是意外死亡陷猫,警方通過查閱死者的電腦和手機(jī)秫舌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绣檬,“玉大人足陨,你說我怎么就攤上這事〗课矗” “怎么了墨缘?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長零抬。 經(jīng)常有香客問我镊讼,道長,這世上最難降的妖魔是什么平夜? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任蝶棋,我火速辦了婚禮,結(jié)果婚禮上忽妒,老公的妹妹穿的比我還像新娘玩裙。我一直安慰自己,他們只是感情好段直,可當(dāng)我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布吃溅。 她就那樣靜靜地躺著,像睡著了一般坷牛。 火紅的嫁衣襯著肌膚如雪罕偎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天京闰,我揣著相機(jī)與錄音颜及,去河邊找鬼。 笑死蹂楣,一個胖子當(dāng)著我的面吹牛俏站,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播痊土,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼肄扎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起犯祠,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤旭等,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后衡载,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搔耕,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年痰娱,在試婚紗的時候發(fā)現(xiàn)自己被綠了弃榨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡梨睁,死狀恐怖鲸睛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情坡贺,我是刑警寧澤官辈,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站遍坟,受9級特大地震影響钧萍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜政鼠,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一风瘦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧公般,春花似錦万搔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至刽虹,卻和暖如春酗捌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涌哲。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工胖缤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人阀圾。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓哪廓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親初烘。 傳聞我的和親對象是個殘疾皇子涡真,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,452評論 2 348