還在用DriverManager獲取數(shù)據(jù)庫連接干奢?快用DataSource吧

圖片來自網(wǎng)絡(luò)

一、開頭牢騷
DriverManager是我從接觸jdbc以來盏袄,一直使用的獲取數(shù)據(jù)庫連接的類忿峻,相當(dāng)好用。
但是辕羽,在學(xué)習(xí)DataSource之前逛尚,我并沒有意識到使用DriverManager會給系統(tǒng)帶來負擔(dān)和資源浪費。
因為我并沒有意識到刁愿,使用DriverManager類來獲取的Connection連接绰寞,是無法重復(fù)利用的。要想重復(fù)利用铣口,必須重新創(chuàng)建連接滤钱。
而創(chuàng)建連接,又很耗費時間和資源脑题!
所以我喜新厭舊了件缸。
我告訴自己要開始另一段生活,要好好學(xué)習(xí)叔遂、天天向上他炊,要上得廳堂、下得廚房已艰,要當(dāng)四有青年痊末。
我找到了DataSource!

二、知識點講解
1.何為數(shù)據(jù)源哩掺?
百度的答案:數(shù)據(jù)源是指數(shù)據(jù)庫應(yīng)用程序所使用的數(shù)據(jù)庫或者數(shù)據(jù)庫服務(wù)器
我的理解:數(shù)據(jù)源就是我們在MySQL中創(chuàng)建的每一個數(shù)據(jù)庫凿叠,比如你創(chuàng)建了一個bbs的數(shù)據(jù)庫,那么數(shù)據(jù)源就是這個bbs.

2.何為數(shù)據(jù)庫連接池嚼吞?
我的理解:就是一個專門用來存放和管理數(shù)據(jù)庫連接對象的東西盒件。

3.為什么要有數(shù)據(jù)庫連接池?
用戶每一次請求都要跟數(shù)據(jù)庫建立連接誊薄,而數(shù)據(jù)庫創(chuàng)建連接需要消耗相當(dāng)大的資源,如果有十萬個用戶锰茉,意味著要建立十萬個連接呢蔫,這樣子消耗數(shù)據(jù)庫資源太大,也很容易出現(xiàn)錯誤。而利用連接池我們能夠?qū)B接進行管理片吊,在數(shù)據(jù)庫連接池中绽昏,有一定數(shù)量的數(shù)據(jù)庫連接對象。用戶每一次請求連接俏脊,都要從數(shù)據(jù)庫連接池中請求全谤,這樣子的話,一個連接對象就可以被多次使用爷贫。就能夠極大的提高數(shù)據(jù)庫資源的利用率认然。
具體的對比圖如下:


圖片來自網(wǎng)絡(luò),有部分修改

4.DataSource對象代表了什么漫萄?
DataSource對象代表了一個數(shù)據(jù)源卷员,通過DataSource對象,我們可以獲取數(shù)據(jù)庫連接腾务。

三毕骡、Tomcat7中獲取DataSource對象
1.在Tomcat7的conf/server.xml下的<GlobalNamingResources>節(jié)點里配置resource

//其中name="jdbc/bbs"可以隨意取
//maxActive是連接池中最大激活連接數(shù)
<Resource name="jdbc/bbs"
      auth="Container"
      type="javax.sql.DataSource"
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
      testWhileIdle="true"
      testOnBorrow="true"
      testOnReturn="false"
      validationInterval="30000"
      timeBetweenEvictionRunsMillis="30000"
      maxActive="30"
      minIdle="5"
      maxWait="10000"
      initialSize="10"
      removeAbandonedTimeout="60"
      removeAbandoned="true"
      logAbandoned="true"
      minEvictableIdleTimeMillis="30000"
      jmxEnabled="true"
      jdbcInterceptors=
"org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"
      username="root"
      password="123"
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://localhost:3306/bbs"/>

2.在context.xml文件的<Context></Context>節(jié)點中添加如下配置:
···
<ResourceLink global="jdbc/bbs" name="jdbc/bbs" type="javax.sql.DataSource"/>
···

3.具體的Java代碼

public class DBUtil {
    public static Connection getConn() throws Exception{
        Connection conn = null;
        DataSource ds = null;
        Context ctx = new InitialContext();
        //java:comp/env是固定的,所有的數(shù)據(jù)庫都一樣       
        Context ctx1 = (Context)ctx.lookup("java:comp/env");
        Context ctx2 = (Context)ctx1.lookup("jdbc");
        ds = (DataSource)ctx2.lookup("bbs");
        
        if(ds != null){
            conn = ds.getConnection();  
        }
        return conn;
    }
    
    public static void closeConn(Connection conn, PreparedStatement ps, ResultSet rs){
        
            try {
                if(conn != null){
                    conn.close();
                }
                if(rs != null){
                    rs.close();
                }
                if(ps != null){
                    ps.close();
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    }
}

不知道小魚有沒有講清楚岩瘦,如果覺得小魚的文章還不錯的話未巫,各位客官看完之后千萬不要忘記點贊和評論哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末启昧,一起剝皮案震驚了整個濱河市叙凡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌箫津,老刑警劉巖狭姨,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異苏遥,居然都是意外死亡饼拍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門田炭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來师抄,“玉大人,你說我怎么就攤上這事教硫∵端保” “怎么了?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵瞬矩,是天一觀的道長茶鉴。 經(jīng)常有香客問我,道長景用,這世上最難降的妖魔是什么涵叮? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上割粮,老公的妹妹穿的比我還像新娘盾碗。我一直安慰自己,他們只是感情好舀瓢,可當(dāng)我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布廷雅。 她就那樣靜靜地躺著,像睡著了一般京髓。 火紅的嫁衣襯著肌膚如雪航缀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天朵锣,我揣著相機與錄音谬盐,去河邊找鬼。 笑死诚些,一個胖子當(dāng)著我的面吹牛飞傀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播诬烹,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼砸烦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了绞吁?” 一聲冷哼從身側(cè)響起幢痘,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎家破,沒想到半個月后颜说,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡汰聋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年门粪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烹困。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡玄妈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出髓梅,到底是詐尸還是另有隱情拟蜻,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布枯饿,位于F島的核電站酝锅,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奢方。R本人自食惡果不足惜搔扁,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一擒权、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阁谆,春花似錦、人聲如沸愉老。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫉入。三九已至焰盗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間咒林,已是汗流浹背熬拒。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留垫竞,地道東北人澎粟。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像欢瞪,于是被迫代替她去往敵國和親活烙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容