思考:
程序中連接如何管理?
1.連接資源寶貴:需要對(duì)連接管理
2.連接:
a) 操作數(shù)據(jù)庫,創(chuàng)建連接
b) 操作結(jié)束,關(guān)閉
分析:
設(shè)計(jì)頻繁的連接的打開關(guān)閉,影響程序的運(yùn)行效率。
用戶每次請(qǐng)求都需要向數(shù)據(jù)庫獲得鏈接,而數(shù)據(jù)庫創(chuàng)建連接通常需要消耗相對(duì)較大的資源,創(chuàng)建時(shí)間也較長。假設(shè)網(wǎng)站一天10萬訪問量,數(shù)據(jù)庫服務(wù)器就需要?jiǎng)?chuàng)建10萬次連接,極大的浪費(fèi)數(shù)據(jù)庫的資源,并且極易造成數(shù)據(jù)庫服務(wù)器內(nèi)存溢出、拓機(jī)。
連接管理:
預(yù)先創(chuàng)建一組連接,有點(diǎn)餓時(shí)候每次取出一個(gè);用完后,放回。
學(xué)習(xí)連接池:
1)自定義一個(gè)連接池
2)學(xué)習(xí)優(yōu)秀的連接池組件
a) DBCP
b)C3P0
程序?qū)崿F(xiàn)思路:
1)制定“初始化連接數(shù)目”(APP啟動(dòng)的時(shí)候,就執(zhí)行創(chuàng)建)
2)指定“最大連接數(shù)”
3)制定“當(dāng)前使用連接個(gè)數(shù)”(不能超出最大連接數(shù))

參考:http://www.javaweb1024.com/java/JavaWebzhongji/2015/06/01/736.html
數(shù)據(jù)庫連接是一種關(guān)鍵的有限的昂貴的資源,這一點(diǎn)在多用戶的網(wǎng)頁應(yīng)用程序中體現(xiàn)的尤為突出。對(duì)數(shù)據(jù)庫連接的管理能顯著影響到整個(gè)應(yīng)用程序的伸縮性和健壯性,影響到程序的性能指標(biāo)。數(shù)據(jù)庫連接池負(fù)責(zé)分配,管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個(gè)現(xiàn)有的數(shù)據(jù)庫連接,而不是重新建立一個(gè)。
代碼實(shí)現(xiàn):
1)MyPool.java 連接池類
2)指定全局參數(shù):初始haunted數(shù)目,最大連接數(shù),當(dāng)前連接
3)構(gòu)造函數(shù):循環(huán)創(chuàng)建多個(gè)連接
4)寫一個(gè)創(chuàng)建連接的方法
5)獲取連接
--->判斷:池中有連接,直接拿
---> 池中沒有連接,
---> 判斷,是否達(dá)到最大連接數(shù);達(dá)到,拋出異常;沒有達(dá)到最大連接數(shù),新的連接
6)釋放連接
自定義連接池
2.開源的連接池
概述:
Sun公司約定,如果是連接池技術(shù),需要實(shí)現(xiàn)一個(gè)接口!Javax.sql.DataSource;
(DBCP和C3P0都要實(shí)現(xiàn)那個(gè)接口)
1)DBCP連接池
連接池也叫DataSource。
連接池的作用:管理連接。
DBCP是Apache軟件基金組織下的開源連接池實(shí)現(xiàn),使用DBCP數(shù)據(jù)源,應(yīng)用程序應(yīng)該在系統(tǒng)中增加如下兩個(gè)jar包:
- Commons-dbcp.jar: 連接池的實(shí)現(xiàn)
- Commons-pool.jar: 連接池實(shí)現(xiàn)的依賴庫
Tomcat的連接池正式采用該連接池來實(shí)現(xiàn)的。該數(shù)據(jù)庫連接池既可以與應(yīng)用服務(wù)器整合使用,也可由應(yīng)用程序獨(dú)立使用。
核心類:BasicDataSource
