亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

彌合對象、關(guān)系之間的鴻溝(1/10)

tianhang / 2515人閱讀

摘要:關(guān)鍵字對象關(guān)系映射現(xiàn)代的應(yīng)用程序常常是使用兩種截然不同的技術(shù)構(gòu)建而成業(yè)務(wù)邏輯部分使用面向?qū)ο缶幊?,?shù)據(jù)存儲使用關(guān)系型數(shù)據(jù)庫。對象關(guān)系映射則是兩者之間的橋梁,它允許應(yīng)用程序以面向?qū)ο蟮姆绞皆L問關(guān)系數(shù)據(jù)。

O/RM技術(shù)可以簡化數(shù)據(jù)訪問,但也需要注意到引入這個新的抽象層來的挑戰(zhàn)。

關(guān)鍵字:對象-關(guān)系映射

  現(xiàn)代的應(yīng)用程序常常是使用兩種截然不同的技術(shù)構(gòu)建而成:業(yè)務(wù)邏輯部分使用面向?qū)ο缶幊蹋瑪?shù)據(jù)存儲使用關(guān)系型數(shù)據(jù)庫。面向?qū)ο缶幊淌菍崿F(xiàn)復(fù)雜的系統(tǒng)的一個關(guān)鍵技術(shù),它提供的好處包括可重用性、健壯性和可維護性。關(guān)系型數(shù)據(jù)庫是保存數(shù)據(jù)的倉庫。O/RM(對象關(guān)系映射)則是兩者之間的橋梁,它允許應(yīng)用程序以面向?qū)ο蟮姆绞皆L問關(guān)系數(shù)據(jù)。?

  O/RM是對象持久化的一個專業(yè)化的一般概念。IBM研究員格雷迪·布赫在他的書《面向?qū)ο蟮姆治雠c應(yīng)用設(shè)計》中,將“持久性”定義為“在程序生命周期之外的數(shù)據(jù)”,是對象模型1中的次要元素。然而,在現(xiàn)代應(yīng)用程序中,貢獻在持久化上的工作量,有時可以主宰一個項目的成本,而使用O/RM工具,可以顯著降低成本。

  有一些其他技術(shù)可以用于從面向?qū)ο蟮某绦蛟L問關(guān)系型數(shù)據(jù),但這些技術(shù)一般不利用編程語言的對象模型特性。要充分利用對象模型的特性,數(shù)據(jù)庫訪問技術(shù)需要支持信息隱藏、關(guān)注點分離、繼承、變化檢測、唯一性保持和數(shù)據(jù)庫獨立性。?

  關(guān)注點分離是將一個程序分為一些邏輯部分的過程,這些部分有很少或根本沒有重疊。在數(shù)據(jù)庫編程中有幾部分應(yīng)分開:1)業(yè)務(wù)方法中查找和操作領(lǐng)域?qū)ο蟮姆椒ǎ?)領(lǐng)域?qū)ο笾锌赡軙?dǎo)致內(nèi)部狀態(tài)的變化的方法和可能會調(diào)用相關(guān)聯(lián)的對象方法的方法;3)生成的數(shù)據(jù)庫命令中對行和列執(zhí)行插入,查詢,更新,和刪除的;4)以及用于數(shù)據(jù)庫事務(wù)劃分的方法。

  信息隱藏是關(guān)注點分離的一個實現(xiàn)策略,此策略根據(jù)接口定義的行為實現(xiàn)特定的類,以降低復(fù)雜性和成本。類實現(xiàn)的行為要和調(diào)用者的行為分開。改變一方的行為并不一定需要也改變另一方。

  繼承允許代碼的重用,一些相關(guān)聯(lián)的類中共同的行為只被定義一次,具有唯一性的行為只在類之間的行為不同的地方實現(xiàn)。如此,一個類的行為和子類或父類(超類)的行為相較,可能是相同或不同的,并且此行為獨立于調(diào)用者的行為。

  變化檢測在一個數(shù)據(jù)庫事務(wù)中一直跟蹤領(lǐng)域?qū)ο蟮淖兓栽谑聞?wù)結(jié)束時,更改將應(yīng)用到數(shù)據(jù)庫。?

  唯一性保持是數(shù)據(jù)庫交互中的一個屬性,在交互中一個獨立領(lǐng)域?qū)嵗龑?yīng)一個數(shù)據(jù)庫行,而不管用戶是如何獲得對象的:通過查詢數(shù)據(jù)庫,從一個實例的引用導(dǎo)航到另一個,或通過提供其首要識別符找到一個確定的領(lǐng)域?qū)嵗?。假若沒有唯一性保持,對一個領(lǐng)域?qū)嵗M行的更改將不會被其他代表同一數(shù)據(jù)庫行的領(lǐng)域?qū)嵗吹?,這可能會導(dǎo)致數(shù)據(jù)庫損壞。?

  數(shù)據(jù)庫獨立性,允許使用一個共同的API和領(lǐng)域模型操作各種數(shù)據(jù)庫而不改變數(shù)據(jù)庫的應(yīng)用程序視圖。

  最早用于訪問關(guān)系數(shù)據(jù)庫的技術(shù)(現(xiàn)在仍然非常流行),使用許多API傳輸SQL語句到服務(wù)器,并把執(zhí)行語句的結(jié)果返回給應(yīng)用程序。這會留給應(yīng)用程序來決定,是直接使用結(jié)果還是創(chuàng)建數(shù)據(jù)結(jié)構(gòu)來表示查詢的結(jié)果,并復(fù)制查詢結(jié)果給這些數(shù)據(jù)結(jié)構(gòu)。

  直接模式化的查詢結(jié)果所用的的數(shù)據(jù)結(jié)構(gòu),無法模型化數(shù)據(jù)庫中存在的關(guān)系;因此,實例之間的關(guān)聯(lián)沒有被數(shù)據(jù)結(jié)構(gòu)充分描述。使用這種類型訪問的例子包括ODBC(開放數(shù)據(jù)庫連接)接口和JDBC(Java數(shù)據(jù)庫連接)接口。這些接口允許有限的關(guān)注分離,但更多情況下是業(yè)務(wù)邏輯與數(shù)據(jù)庫編程混合在一起。他們不支持信息隱藏,繼承,變化檢測,唯一性保持或數(shù)據(jù)庫獨立性。

  更強大的技術(shù)是在其接口中提供一些方法將查詢結(jié)果復(fù)制到用戶指定的數(shù)據(jù)結(jié)構(gòu)。用戶提供所有注釋過的SQL語句,使它們可以對應(yīng)數(shù)據(jù)結(jié)構(gòu)。用戶創(chuàng)建的SQL語句包括所有的查詢,加上插入,更新和刪除。這些技術(shù)處理很多容易出錯和耗費時間的工作以分析查詢結(jié)果,但仍然給用戶留下許多艱巨的任務(wù)。以這種風(fēng)格訪問的一個例子是iBATIS,它支持信息隱藏和有限的關(guān)注分離,但不支持繼承,變化檢測,唯一性保持或數(shù)據(jù)庫獨立性。

  使用O/RM,存儲在關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)將作為本地對象編程語言中的對象表示給應(yīng)用程序。程序員映射領(lǐng)域?qū)ο竽P皖惖疥P(guān)系表,并使用一個由持久性提供程序?qū)崿F(xiàn)了的API來訪問數(shù)據(jù)庫。對數(shù)據(jù)庫的查詢表達為領(lǐng)域?qū)ο竽P偷姆绞?。提供程序直接從領(lǐng)域模型生成SQL語句。馬丁·福勒稱這種方法DataMapper.2

  O/RM技術(shù)和產(chǎn)品在許多面向?qū)ο蟮恼Z言中可用,包括Java,C++,C#,Python,Smalltalk,Ruby和Groovy。O/RM所用的技術(shù)和編程范式適用于許多支持這些語言的產(chǎn)品。(在這篇文章中,例子使用Java)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/17434.html

相關(guān)文章

  • 彌合對象、關(guān)系之間鴻溝(2/10)

    摘要:使用標(biāo)準(zhǔn)的持久性的一個優(yōu)點是它允許項目作出晚部署項目數(shù)據(jù)庫和持久性提供程序的決定。映射通常是需要聲明的,表示領(lǐng)域?qū)ο竽P团c關(guān)系模式模型之間關(guān)聯(lián)的映射在應(yīng)用程序運行之前已經(jīng)定義。 O/RM的架構(gòu)   從應(yīng)用程序的視角看,O/RM有兩個主要部分:持久性API和領(lǐng)域類。在Java中,API通常是Java社區(qū)流程的標(biāo)準(zhǔn)之一 ---Java持久性API,企業(yè)JavaBeans或Java數(shù)據(jù)對象...

    sherlock221 評論0 收藏0
  • 彌合對象、關(guān)系之間鴻溝(2/10)

    摘要:使用標(biāo)準(zhǔn)的持久性的一個優(yōu)點是它允許項目作出晚部署項目數(shù)據(jù)庫和持久性提供程序的決定。映射通常是需要聲明的,表示領(lǐng)域?qū)ο竽P团c關(guān)系模式模型之間關(guān)聯(lián)的映射在應(yīng)用程序運行之前已經(jīng)定義。 O/RM的架構(gòu)   從應(yīng)用程序的視角看,O/RM有兩個主要部分:持久性API和領(lǐng)域類。在Java中,API通常是Java社區(qū)流程的標(biāo)準(zhǔn)之一 ---Java持久性API,企業(yè)JavaBeans或Java數(shù)據(jù)對象...

    golden_hamster 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<