基于對象關(guān)系映射的對象持久化模型的分析與設(shè)計.pdf_第1頁
已閱讀1頁,還剩95頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、作為軟件中描述數(shù)據(jù)的兩種主流模型——對象模型和關(guān)系模型,具有不同的理論基礎(chǔ)和模型特點。對象模型用對象來表示現(xiàn)實世界中的事物;利用對象模型,能夠很好地描述和設(shè)計復(fù)雜的軟件系統(tǒng)。這使得面向?qū)ο蟮脑O(shè)計方法在軟件開發(fā)中大行其道,已經(jīng)成為業(yè)務(wù)數(shù)據(jù)分析的基礎(chǔ),成為幾乎所有應(yīng)用開發(fā)的標準技術(shù)。但令人沮喪的是,與其同基于對象模型,理論上模式最相匹配的面向?qū)ο髷?shù)據(jù)庫卻無法擔(dān)任主流,大多數(shù)應(yīng)用的存儲還要在關(guān)系型數(shù)據(jù)庫中實現(xiàn)。但是對象模型與關(guān)系模型對數(shù)據(jù)的描

2、述方式是不同的:對象包含屬性和行為,對象之間有繼承、關(guān)聯(lián)等關(guān)系,而關(guān)系數(shù)據(jù)庫包含表、關(guān)系及表之間的關(guān)系使用主、外鍵表示等。這就突顯出對象模型與關(guān)系模型的模式失配問題。 在絕大多數(shù)的應(yīng)用中,內(nèi)存中暫時存在的對象需要永久的保存在關(guān)系數(shù)據(jù)庫中,使得設(shè)計者要花費大量的精力解決對象型數(shù)據(jù)向關(guān)系型數(shù)據(jù)轉(zhuǎn)化,并將數(shù)據(jù)存儲在關(guān)系型數(shù)據(jù)庫中的問題。 實現(xiàn)在關(guān)系數(shù)據(jù)庫存取對象,常用的做法有:第一種方法是SQL語句嵌入到應(yīng)用代碼即直接編寫SQ

3、L代碼來存取對象;第二種方法是將SQL代碼在專門的數(shù)據(jù)類(或存儲過程)中編寫;實質(zhì)是將執(zhí)行SQL操作的源代碼封裝到了數(shù)據(jù)類中,是一種局部封裝。但著兩種方式都使得對象模型與關(guān)系數(shù)據(jù)庫模式的耦合度大,不容易維護,因為無論是對象還是關(guān)系模式的微小改動,都將導(dǎo)致應(yīng)用程序的重新編譯。只適合小型應(yīng)用系統(tǒng)或快速原型化。第三種,也是主流方法,即專門編制持久層實現(xiàn)對象和關(guān)系之間的映射,這種機制使應(yīng)用程序的開發(fā)人員不需要了解關(guān)系數(shù)據(jù)庫的模式,也不需要了解操

4、作對象在數(shù)據(jù)庫的存儲方式就可以透明地操作存儲在關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),有利開發(fā)大規(guī)模的應(yīng)用程序。但由于在設(shè)計體系中加入了持久層,勢必造成效率方面的問題,使得在持久層的設(shè)計中不單單只是處理模式失配的問題,還要求有相應(yīng)的機制解決效率等問題。持久層的設(shè)計要權(quán)衡諸如性能、讀取頻率、可擴展性、空間耗費、支持事務(wù)、游標、處理對象標識等,使持久層具有應(yīng)用系統(tǒng)所要求的功能,并結(jié)合實際應(yīng)用環(huán)境來權(quán)衡持久層的各種功能,滿足最基本的、最滿足應(yīng)用環(huán)境的功能需求。持

5、久層的映射要遵循一定的規(guī)則,不同的持久層所支持的映射規(guī)則是不相同的。但一般的ORM都要支持類、屬性、方法的映射、關(guān)系映射、繼承的映射、數(shù)據(jù)完整性的映射等基本功能。本文對映射規(guī)則結(jié)合實例進行了深入分析,介紹了各種映射概念、方法,同時對實現(xiàn)同一目標的不同方法進行了橫向的對比,有的還給出了使用原則。 目前流行且非常成熟的J2EE是主流的創(chuàng)建企業(yè)級應(yīng)用的平臺,JDO是其輕量級的版本,但作為中間件也存在著諸如占用資源過多,依賴于XML,的

6、數(shù)據(jù)實體表示方式的特點;而微軟的.NET出現(xiàn)的時間比較短,目前在這個平臺上沒有成熟統(tǒng)一的架構(gòu),本文描述和設(shè)計的便是基于微軟的.NET的的中間件的架構(gòu),嚴格地說它不是狹義上的對象關(guān)系映射及持久化工具,因為它站在軟件整體設(shè)計的視角以數(shù)據(jù)實體和數(shù)據(jù)訪問作為核心實現(xiàn)目標,同時預(yù)留和簡單實現(xiàn)了實體控制、業(yè)務(wù)規(guī)則等功能。 本文提出的Netlight一種主要解決對象關(guān)系映射,數(shù)據(jù)庫訪問的中間件的架構(gòu),雖然是一種輕量級的、相對來說較簡單的架構(gòu),

7、但是它的架構(gòu)基于分層,結(jié)構(gòu)清晰,經(jīng)過功能的強化,在添加更多的模塊之后是可作為一個企業(yè)級的、具有較大的擴展性、耦合度較小的中間件框架。跟常用的框架的分層的區(qū)別在于對數(shù)據(jù)實體層進一步細分為數(shù)據(jù)實體和數(shù)據(jù)操縱層,使得業(yè)務(wù)邏輯層的代碼更清晰,和數(shù)據(jù)實體層的耦合度進一步降低。Netlight分層設(shè)置為業(yè)務(wù)外觀層、業(yè)務(wù)邏輯層、實體控制層、數(shù)據(jù)實體層和數(shù)據(jù)訪問層的五層架構(gòu)來封裝不同數(shù)據(jù)庫的連接訪問、數(shù)據(jù)表示、數(shù)據(jù)的查詢、插入、刪除及修改等,以及業(yè)務(wù)的

8、邏輯處理和業(yè)務(wù)服務(wù)的提供,使上層只需要調(diào)用下層封裝過的操作,而不必關(guān)心其實現(xiàn)細節(jié),各行各職,減少了系統(tǒng)和存儲介質(zhì)及各功能單位的相互耦合,使代碼清晰度高,具有較高的可維護性,可使軟件設(shè)計中的部分工作可以并行,提高了開發(fā)效率。關(guān)于Netlight的類結(jié)構(gòu),本文詳細介紹并結(jié)合實例分析了系統(tǒng)的映射規(guī)則、數(shù)據(jù)庫訪問的封裝、數(shù)據(jù)實體的表示、數(shù)據(jù)實體的控制、業(yè)務(wù)邏輯及業(yè)務(wù)服務(wù)的提供等等,列出了實現(xiàn)層次功能的關(guān)鍵類、常用方法以及類間的調(diào)用關(guān)系等。

溫馨提示

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

評論

0/150

提交評論