三执庐、Spring——數(shù)據(jù)訪問

1、Spring 對 DAO的支持

  • Spring支持目前大多數(shù)常用的數(shù)據(jù)持久化技術(shù)导梆,Spring定義了一套面向DAO層的異常體系轨淌,并未各種支持的持久化技術(shù)提供了異常轉(zhuǎn)換器。這樣看尼,我們在設(shè)計DAO接口時递鹉,就可以拋開具體的實現(xiàn)技術(shù),定義統(tǒng)一的接口藏斩。

  • 不管采用 何種持久化技術(shù)躏结,訪問數(shù)據(jù)的流程是相對固定的。Spring將數(shù)據(jù)訪問流程劃分為固定和變化兩個部分灾茁,并以模板的方式定好流程窜觉,用回調(diào)接口將變化的部分開放出來谷炸,留給開發(fā)者自行定義。這樣禀挫,我們僅需要提供業(yè)務(wù)相關(guān)的邏輯就可以完成整體的數(shù)據(jù)訪問了旬陡。

  • Spring為了進一步簡化持久模板類的使用,為各個持久化技術(shù)提供了便捷的支持類语婴,支持類不但包含數(shù)據(jù)訪問模板描孟,還包含數(shù)據(jù)源或會話等內(nèi)容。通過擴展支持類定義自己的數(shù)據(jù)訪問類是最簡單的數(shù)據(jù)訪問方式砰左。

  • 不管采用何種持久化技術(shù)匿醒,都需要定義數(shù)據(jù)源。在實際部署中缠导,我們可能會采用應(yīng)用服務(wù)器本身提供的數(shù)據(jù)源廉羔,這時,則可以通過JndiObjectFactoryBean或jee命名空間引用JNDI中的數(shù)據(jù)源僻造。

2憋他、Spring的事務(wù)管理

  • Spring使聲明式事務(wù)平民化,事務(wù)作為一個切面織入到目標業(yè)務(wù)方法的周圍髓削,業(yè)務(wù)方法完全從事務(wù)代碼中解脫出來竹挡,代碼的復(fù)雜度大大降低。被織入的事務(wù)代碼基于Spring事務(wù)同步管理器進行工作立膛,事務(wù)同步管理器維護著業(yè)務(wù)類對象線程相關(guān)資源揪罕。DAO類需要利用資源獲取工具訪問底層數(shù)據(jù)連接,或者直接建立在相應(yīng)持久化模板類的基礎(chǔ)上宝泵。

  • Spring的事務(wù)配置主要提供兩方面的信息:其一好啰,切點信息,用于定位實施事務(wù)切面的業(yè)務(wù)類方法鲁猩;其二坎怪,控制事務(wù)行為的事務(wù)屬性,這些屬性包括事務(wù)隔離級別廓握、事務(wù)傳播行為搅窿、超時時間、回滾規(guī)則隙券。

3男应、Spring事務(wù)管理難點剖析

  • 在沒有事務(wù)管理的情況下,DAO照樣可以順利進行數(shù)據(jù)操作娱仔;
    將應(yīng)用分為Web沐飘、Service及DAO層只是一種參考的開發(fā)模式,并非是事務(wù)管理工作的前提條件;

  • Spring通過事務(wù)傳播機制可以很好地應(yīng)對事務(wù)方法嵌套調(diào)用的情況耐朴,開發(fā)者無須為了事務(wù)管理而可以改變服務(wù)方法的設(shè)計借卧;

  • 經(jīng)過事務(wù)管理增強的到實例Bean不存在線程安全問題,可以很好地工作在多線程環(huán)境下筛峭;

  • 混合使用多個數(shù)據(jù)訪問框架的最佳組合是一個ORM技術(shù)框架(Hibernate 或 JPA)+ 一個JDBC技術(shù)框架(Spring JDBC 或 iBatis)铐刘。直接使用ORM技術(shù)框架對應(yīng)的事管理器就行了,但必須考慮ORM緩存同步問題影晓;

  • Spring AOP增強有兩個方案:其一是基于接口的動態(tài)代理镰吵,其二為基于CGLib動態(tài)生成子類的代理。由于Java語言的特性挂签,有些特殊方法不能被Spring AOP代理疤祭,所以無法享受AOP織入到來的事務(wù)增強;

  • 使用Spring JDBC時如果直接使用Connection饵婆,可能會造成連接泄漏勺馆。為降低連接泄漏的可能性,盡量使用DataSourceUtils獲取數(shù)據(jù)連接啦辐。也可以對數(shù)據(jù)源進行代理谓传,以便數(shù)據(jù)源擁有感知事務(wù)上下文的能力蜈项;

4芹关、使用Spring JDBC訪問數(shù)據(jù)庫

  • JdbcTemplate 使用大量的回調(diào)接口完成數(shù)據(jù)的訪問操作,StatementCallback紧卒、PreparedStatementCallback侥衬、CallableStatementCallback、BatchPreparedStatementSetter以及RowMapper是其中常用的回調(diào)接口跑芳,一般可以通過匿名內(nèi)部類實現(xiàn)這些回調(diào)接口轴总,使代碼更加緊湊;

5博个、整合其他ORM框架

  • Sprng為其所支持的ORM框架提供方便易用的FactoryBean用以創(chuàng)建ORM框架的基礎(chǔ)設(shè)施怀樟。Spring通過模板類在不損失框架功能的前提下大大降低了使用這些ORM技術(shù)的難度。但也允許用戶使用框架原生的API構(gòu)造DAO盆佣,使用原生API時往堡,Spring能保證用戶獲取到事務(wù)綁定的資源,Spring的事務(wù)管理機制同樣有效共耍;

  • 具體的應(yīng)用一般會定義一個項目級的DAO基類虑灰,簡化接口方法、添加泛型支持痹兜,一個設(shè)計良好的DAO積累可以大大減少DAO層整體代碼的總量穆咐,提高項目開發(fā)效率。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市对湃,隨后出現(xiàn)的幾起案子崖叫,更是在濱河造成了極大的恐慌,老刑警劉巖拍柒,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件归露,死亡現(xiàn)場離奇詭異,居然都是意外死亡斤儿,警方通過查閱死者的電腦和手機剧包,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來往果,“玉大人疆液,你說我怎么就攤上這事∩轮” “怎么了堕油?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長肮之。 經(jīng)常有香客問我掉缺,道長,這世上最難降的妖魔是什么戈擒? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任眶明,我火速辦了婚禮,結(jié)果婚禮上筐高,老公的妹妹穿的比我還像新娘搜囱。我一直安慰自己,他們只是感情好柑土,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布蜀肘。 她就那樣靜靜地躺著,像睡著了一般稽屏。 火紅的嫁衣襯著肌膚如雪扮宠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天狐榔,我揣著相機與錄音坛增,去河邊找鬼。 笑死荒叼,一個胖子當著我的面吹牛轿偎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播被廓,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼坏晦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起昆婿,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤球碉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后仓蛆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體睁冬,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年看疙,在試婚紗的時候發(fā)現(xiàn)自己被綠了豆拨。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡能庆,死狀恐怖施禾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搁胆,我是刑警寧澤弥搞,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站渠旁,受9級特大地震影響攀例,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顾腊,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一粤铭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧投慈,春花似錦承耿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凛辣。三九已至抱既,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扁誓,已是汗流浹背防泵。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蝗敢,地道東北人捷泞。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像寿谴,于是被迫代替她去往敵國和親锁右。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

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

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,822評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)咏瑟,斷路器拂到,智...
    卡卡羅2017閱讀 134,661評論 18 139
  • 對經(jīng)常關(guān)注淘品牌的人來說余寥,張大奕领铐、大金、管阿姨等名字絕對不陌生宋舷,而這些炙手可熱的網(wǎng)紅店鋪實際上都屬于同一家公司——...
    SI玲閱讀 509評論 0 1
  • 大概是我們這個年紀的執(zhí)迷 認為對的人就奮不顧身 最后愛而不得 大概是我們這個年紀的執(zhí)迷 認為背叛的友誼就一文不值 ...
    蘇茫Wyg閱讀 213評論 2 0
  • 姥爺罐孝,你可怕死啊肥缔?不怕莲兢。為什么呢?活著跟你在一起续膳,死了跟你舅舅他們在一起改艇,兩邊都是我的親人。那人死了后都到哪兒去了...
    柳七歸來閱讀 453評論 6 6