基于對(duì)象關(guān)系映射的數(shù)據(jù)持久層框架的改進(jìn)設(shè)計(jì)與實(shí)現(xiàn).pdf_第1頁(yè)
已閱讀1頁(yè),還剩54頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、計(jì)算機(jī)的出現(xiàn)對(duì)人類來(lái)說(shuō)具有著劃時(shí)代的意義,計(jì)算機(jī)擁有高速的計(jì)算能力,在完成精確任務(wù)和批量計(jì)算方面比人類更穩(wěn)定,成為了輔助科技進(jìn)步的強(qiáng)力工具。隨著永久儲(chǔ)存介質(zhì)(如磁盤(pán)等)的出現(xiàn),使計(jì)算機(jī)又擁有了人類無(wú)法企及的“記憶能力”。如何管理、使用計(jì)算機(jī)的“記憶能力”呢?數(shù)據(jù)庫(kù)技術(shù)應(yīng)運(yùn)而生。有了數(shù)據(jù)庫(kù),我們可以將數(shù)據(jù)從計(jì)算機(jī)內(nèi)存保存到其他永久儲(chǔ)存設(shè)備中以便于日后的查詢、修改,這也就是所謂的數(shù)據(jù)持久化。 數(shù)據(jù)庫(kù)技術(shù)經(jīng)過(guò)幾代的發(fā)展,目前最成熟和應(yīng)

2、用最廣泛的是關(guān)系型數(shù)據(jù)庫(kù),它是從數(shù)學(xué)模型發(fā)展起來(lái)的,用嚴(yán)格的數(shù)學(xué)邏輯和方法管理數(shù)據(jù),擁有成熟、可靠、高效的數(shù)據(jù)操控能力。但不幸的是,數(shù)據(jù)庫(kù)的發(fā)展并沒(méi)能和軟件技術(shù)的發(fā)展相匹配。隨著軟件工工程技術(shù)的發(fā)展,面向?qū)ο蟮脑O(shè)計(jì)、開(kāi)發(fā)方法已經(jīng)是軟件生產(chǎn)的主流技術(shù)。但由于關(guān)系型數(shù)據(jù)庫(kù)是不面向?qū)ο蟮?,這使得數(shù)據(jù)在計(jì)算機(jī)系統(tǒng)中不得不以兩種形式存在,在業(yè)務(wù)系統(tǒng)的內(nèi)存中,數(shù)據(jù)表現(xiàn)為對(duì)象,在數(shù)據(jù)庫(kù)中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對(duì)象存在著關(guān)聯(lián)和繼承等關(guān)系,而數(shù)據(jù)庫(kù)中無(wú)

3、法表現(xiàn)多對(duì)多關(guān)聯(lián)和繼承關(guān)系。在面向?qū)ο髷?shù)據(jù)庫(kù)技術(shù)可以成熟應(yīng)用之前,為了能夠把對(duì)象數(shù)據(jù)持久化到關(guān)系數(shù)據(jù)庫(kù)中,出現(xiàn)了關(guān)系一對(duì)象映射(Object-Relationg Mapping簡(jiǎn)稱ORM)思想和技術(shù)。 在JAVA領(lǐng)域,通過(guò)JDBC編程來(lái)訪問(wèn)數(shù)據(jù)庫(kù)是傳統(tǒng)的做法,這種做法是最原始、最直接的。JDBC的數(shù)據(jù)庫(kù)操作是基于行集的,雖然它有著高效的運(yùn)行效率,卻必須在JAVA程序中嵌套大量的SQL語(yǔ)句,應(yīng)用程序擔(dān)負(fù)著繁重的操控?cái)?shù)據(jù)的工作,并使

4、得項(xiàng)目難以維護(hù)。雖然根據(jù)MVC的思想可以通過(guò)JDBC編程來(lái)開(kāi)發(fā)單獨(dú)的持久層,封裝對(duì)數(shù)據(jù)庫(kù)的操作,提供統(tǒng)一的接口,供業(yè)務(wù)層使用。但這要求對(duì).JDBC有很高的專業(yè)知識(shí),在項(xiàng)目組織中,不得不抽出最好的設(shè)計(jì)、開(kāi)發(fā)人員專門進(jìn)行持久層的設(shè)計(jì)開(kāi)發(fā),在業(yè)務(wù)邏輯和數(shù)據(jù)持久化方案之間艱難的調(diào)和項(xiàng)目組的開(kāi)發(fā)資源,使得有限的人力不能專注于業(yè)務(wù)邏輯的研究,往往造成項(xiàng)目開(kāi)發(fā)中顧此失彼。而且由于數(shù)據(jù)庫(kù)結(jié)構(gòu)的不同,每次開(kāi)發(fā)的持久層無(wú)法直接重復(fù)使用,使得程序復(fù)用變得困難

5、,每次都要開(kāi)發(fā)專用卻又功能相似的持久層程序,使得項(xiàng)目開(kāi)發(fā)陷入重復(fù)工作和低效率之中。龐大的持久層代碼隨著項(xiàng)目復(fù)雜度的增加,也會(huì)變得越來(lái)越難以維護(hù),假設(shè)項(xiàng)目組當(dāng)初開(kāi)發(fā)持久層的人員中途撤出,其他人員面對(duì)一個(gè)充滿了sql語(yǔ)句和數(shù)據(jù)操作邏輯的持久層,很難在短時(shí)間內(nèi)進(jìn)行有效的維護(hù)。 幸運(yùn)的是,基于ORM思想的持久層框架為我們解決上述問(wèn)題。ORM是一種描繪對(duì)象與關(guān)系數(shù)據(jù)相互轉(zhuǎn)換并持久化對(duì)象數(shù)據(jù)的原則思想,基于它的軟件框架即為ORM框架,現(xiàn)在有

6、許多ORM持久化框架可供選擇,比如EJB、Hibernate、IBATIS、TopLink、OJB等等,他們承擔(dān)了對(duì)象數(shù)據(jù)持久化的主要工作,不但可以自動(dòng)將對(duì)象與關(guān)系數(shù)據(jù)進(jìn)行對(duì)應(yīng)(當(dāng)然這需要一些前期配置策略),更能自動(dòng)產(chǎn)生sql語(yǔ)句,大大減少了應(yīng)用系統(tǒng)持久層的代碼量,同時(shí)也就大大減輕了開(kāi)發(fā)人員的工作量。他們有些是商業(yè)性的,有些則是非商業(yè)的。其中非商業(yè)的Hibernate是目前最成熟和使用最廣泛的ORM框架。它之所以能夠流行,要?dú)w功于以下的

7、優(yōu)勢(shì): 1.它是開(kāi)源的。開(kāi)發(fā)者可根據(jù)需要研究其源代碼,定制自己的功能。 2.它在所有ORM框架中擁有最詳細(xì)的文檔,使得研究和使用更方便。 3.僅對(duì)JDBC做了輕量級(jí)的封裝,如有必要,開(kāi)發(fā)者可以繞過(guò)它,直接使用JDBC。 4.具有良好的可擴(kuò)展性,使其改進(jìn)成為可能,并最終保持旺盛的生命力。 5.它既適用于獨(dú)立的JAVA程序,也適用于JAVA WEB應(yīng)用,還可以與EJB集成,大大拓展了其使用范圍。

8、 6.它可以與多種WEB服務(wù)器、應(yīng)用服務(wù)器相集成,并適用于目前幾乎所有的主流數(shù)據(jù)庫(kù)。 本文首先探討ORM框架產(chǎn)生原因以及它的基本思想和原理,在研究與之相關(guān)的面向?qū)ο?、持久化、持久層、DAO、MDA的理論思想以及目前流行的ORM框架的基礎(chǔ)上,分析了其主要優(yōu)點(diǎn),也總結(jié)出其存在的三個(gè)主要缺陷。 1.由于面向?qū)ο蠹夹g(shù)強(qiáng)制用戶使用對(duì)象來(lái)代表關(guān)系型數(shù)據(jù),這會(huì)導(dǎo)致大量的冗余數(shù)據(jù)存放于內(nèi)存中,這些冗余數(shù)據(jù)并不參與當(dāng)前的事務(wù)處理,并在生

9、命周期結(jié)束的時(shí)候被析構(gòu)函數(shù)或者垃圾收集器釋放。 2.復(fù)雜的映射和關(guān)聯(lián)管理,使ORM對(duì)系統(tǒng)性能造成了較大的影響。在ORM系統(tǒng)中,對(duì)象之間通常通過(guò)對(duì)象引用和各種集合屬性將對(duì)象相互關(guān)聯(lián)起來(lái),組成更加復(fù)雜的復(fù)合對(duì)象。應(yīng)用程序同通過(guò)逐個(gè)訪問(wèn)成員對(duì)象來(lái)完成對(duì)這些復(fù)合對(duì)象的訪問(wèn)。這種在多個(gè)成員對(duì)象之間的導(dǎo)航操作導(dǎo)致了客戶端和后端數(shù)據(jù)庫(kù)系統(tǒng)之間的獲取操作大幅度增加,從而導(dǎo)致了嚴(yán)重的性能問(wèn)題。 3.ORM使用配置文件和注釋來(lái)設(shè)置映射關(guān)系和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論