posts - 66,  comments - 11,  trackbacks - 0
              持久:英文即Persistence,簡(jiǎn)單來講,也就是把數(shù)據(jù)保存到可掉電式存儲(chǔ)設(shè)備中供之后使用。數(shù)據(jù)持久化往往意味著將內(nèi)存中的數(shù)據(jù)保存到磁盤上加以固化,而持久化的實(shí)現(xiàn)過程則大多通過各種關(guān)系型數(shù)據(jù)庫來完成。
              持久層:也就是在系統(tǒng)邏輯層面上,專注于實(shí)現(xiàn)數(shù)據(jù)持久化的一個(gè)相對(duì)獨(dú)立的領(lǐng)域。
              所謂的持久層,其判定標(biāo)準(zhǔn)
              1、如果表示層發(fā)生變化,需要從JSP遷移到Java WebStart Client,我們的數(shù)據(jù)庫代碼是否需要重新編譯。
              2、如果業(yè)務(wù)邏輯層發(fā)生了變化,那么數(shù)據(jù)持久化代碼是否需要重新編譯?
              3、如果地秤數(shù)據(jù)庫持久化機(jī)制發(fā)生了改變,那么,系統(tǒng)中的非持久化部分代碼是否需要重新編譯?
             
              何謂耦合:就是事務(wù)之間的相互關(guān)聯(lián)關(guān)系
              何謂解耦:即采用一些手段降低關(guān)聯(lián)的緊密程度。
              我們需要的是一個(gè)粒度適中的耦合關(guān)系,而并非完全意義上的松耦合。
             
              軟件系統(tǒng)的研發(fā)過程中,貫穿了技術(shù)層面和業(yè)務(wù)層面的代碼實(shí)現(xiàn)過程。程序邏輯必須結(jié)合業(yè)務(wù)領(lǐng)域內(nèi)相應(yīng)的數(shù)據(jù)和系統(tǒng)資源,反映出特定的業(yè)務(wù)邏輯。對(duì)于一個(gè)業(yè)務(wù)系統(tǒng)而言,系統(tǒng)研發(fā)的目的是為特定業(yè)務(wù)提供支持,業(yè)務(wù)邏輯往往是系統(tǒng)實(shí)現(xiàn)的核心。此時(shí),將業(yè)務(wù)邏輯與數(shù)據(jù)訪問邏輯相分離尤為重要。

              在業(yè)務(wù)邏輯的實(shí)現(xiàn)過程中,我們應(yīng)該避免業(yè)務(wù)邏輯代碼中混雜數(shù)據(jù)訪問代碼,而同樣,數(shù)據(jù)訪問代碼中,也應(yīng)該避免出現(xiàn)業(yè)務(wù)邏輯代碼。

              通過良好的設(shè)計(jì)將邏輯結(jié)構(gòu)與物理結(jié)構(gòu)相分離。這里所謂的物理結(jié)構(gòu)并非傳統(tǒng)意義上的硬件設(shè)備,而是我們所無法控制的系統(tǒng)層面,如底層數(shù)據(jù)庫接口。

              目標(biāo)只有一個(gè),底層實(shí)現(xiàn)變動(dòng)的情況下,盡量避免對(duì)上層結(jié)構(gòu)產(chǎn)生影響。一個(gè)設(shè)計(jì)良好的持久層實(shí)現(xiàn),即便從oracle切換到mysql數(shù)據(jù)庫,也不會(huì)引起大范圍的代碼變更。

              DAO(Data Access Object)模式,DAO模式實(shí)際上是2個(gè)模式的組合,即Data Accessor模式和Active Domain Object模式,其中Data Accessor模式實(shí)現(xiàn)了數(shù)據(jù)訪問和業(yè)務(wù)邏輯的分離,而Active Domain Object模式實(shí)現(xiàn)了業(yè)務(wù)數(shù)據(jù)的對(duì)象化封裝,一般我們將這2個(gè)模式組合使用。
              DAO模式通過對(duì)業(yè)務(wù)層提供數(shù)據(jù)抽象層接口,實(shí)現(xiàn)了以下目標(biāo):
              1、數(shù)據(jù)存儲(chǔ)邏輯的分離
              通過對(duì)數(shù)據(jù)訪問邏輯進(jìn)行抽象,為上層結(jié)構(gòu)提供抽象化的數(shù)據(jù)訪問接口。業(yè)務(wù)層無需關(guān)心具體的select,insert,update操作,這樣,一方面避免了業(yè)務(wù)代碼中混雜JDBC調(diào)用語句,使得業(yè)務(wù)邏輯實(shí)現(xiàn)更加清晰,另一方面,由于數(shù)據(jù)訪問接口與數(shù)據(jù)訪問實(shí)現(xiàn)相分離,也使得開發(fā)人員的專業(yè)劃分成為可能。
              2、數(shù)據(jù)訪問底層實(shí)現(xiàn)的分離
              DAO模式通過將數(shù)據(jù)訪問劃分為抽象層和實(shí)現(xiàn)層,從而分離了數(shù)據(jù)使用和數(shù)據(jù)訪問的底層實(shí)現(xiàn)細(xì)節(jié)。這意味著業(yè)務(wù)層與數(shù)據(jù)訪問的底層細(xì)節(jié)無關(guān),也就是說,我們可以在保持上層結(jié)構(gòu)不變的情況下,通過切換底層實(shí)現(xiàn)來修改數(shù)據(jù)訪問的具體機(jī)制。
              3、資源管理和調(diào)度的分離
              在數(shù)據(jù)庫操作中,資源的管理和調(diào)度是一個(gè)非常值得關(guān)注的主題。大多數(shù)系統(tǒng)的性能瓶頸往往并非集中在業(yè)務(wù)邏輯處理本身。DAO模式將數(shù)據(jù)訪問邏輯從業(yè)務(wù)邏輯中脫離出來,使得在數(shù)據(jù)訪問層實(shí)現(xiàn)統(tǒng)一的資源調(diào)度成為可能,通過數(shù)據(jù)庫連接池以及各種緩存機(jī)制的配合使用,往往可以在保持上層系統(tǒng)不變的情況下,大幅度提升系統(tǒng)性能。
              4、數(shù)據(jù)抽象
              DAO模式通過對(duì)底層數(shù)據(jù)的封裝,為業(yè)務(wù)層提供一個(gè)面向?qū)ο蟮慕涌冢沟脴I(yè)務(wù)邏輯開發(fā)人員可以面向業(yè)務(wù)中的實(shí)體進(jìn)行編碼。通過引入DAO模式,業(yè)務(wù)邏輯更加清晰,且富裕形象性和描述性。

          posted on 2009-10-05 10:32 王永慶 閱讀(246) 評(píng)論(0)  編輯  收藏 所屬分類: HIBERNATE
          <2009年10月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          關(guān)注blogs

          搜索

          •  

          最新評(píng)論

          • 1.?re: 心中的那個(gè)她[未登錄]
          • 如果心情能那么容易放開就好了,碰到她是我的緣分,但是她的緣分不知道在哪里。
          • --王永慶
          • 2.?re: 心中的那個(gè)她[未登錄]
          • 兄弟,喜歡就大膽去追好了,就是因?yàn)橄矚g才會(huì)有不愉快,如果想一輩子沒有這些煩惱,找一個(gè)可有可無的人就好了。這種事講的是緣分吧。別人對(duì)你好不好其實(shí)不太重要。放開心情就好了。
          • --萍水相逢
          • 3.?re: 心中的那個(gè)她
          • 只能同甘不能共苦,就他媽算了吧,程序員也是人啊!我現(xiàn)在也很討厭女的不理解人情。
          • --咖啡妝
          • 4.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --王永慶
          • 5.?re: 難以割舍的那份情感
          • 評(píng)論內(nèi)容較長(zhǎng),點(diǎn)擊標(biāo)題查看
          • --隔葉黃鶯

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 正定县| 耿马| 广平县| 义马市| 花垣县| 方山县| 崇义县| 兰坪| 德格县| 盐源县| 夏津县| 邹城市| 颍上县| 卢氏县| 孟连| 美姑县| 武平县| 西吉县| 宿迁市| 西乡县| 农安县| 毕节市| 冀州市| 饶平县| 高雄县| 沛县| 阳新县| 黑水县| 台东县| 宁城县| 闽侯县| 吴川市| 县级市| 称多县| 云龙县| 陆丰市| 徐闻县| 福清市| 汉沽区| 民丰县| 保靖县|