剖析 .Net 下的資料訪問層技術(三)

來源:互聯網
上載者:User
訪問|資料 u O/R Mapping

O/R Mapping的全稱是:Object Relational Mapping,主要目的是在傳統RDBMS與OO Language之間建映射關係,從而使開發人員徹底脫離資料持久這片剪不斷理還亂的苦海。

關於O/R Mapping或者近來比較熱門的O/X Mapping(大家可以參考“程式員,2004.01,P86”),可能需要專門的文章進行詳細論述,本文的目的主要是對現有方案的優缺點進行簡單剖析以及提供一些實踐中的參考資訊。

相比較J2EE平台,.NET下的O/R Mapping可謂沒什麼曆史,至今還尚未有經過考驗的成熟的可用方案。但是,隨著各大廠商的重視以及開源項目的如火如荼,.NET O/R Mapping的步伐也開始慢慢跟上,使這塊本屬於J2EE的領地加入了新的競爭者(會不會使更多的開發人員投入.NET陣營?J),也讓眾多疲於在SQL Clause或ADO.NET中來回奔命的DAL開發人員看到了“光明之路”。



接下來,就讓我們一起看看在這片比ADO.NET更廣闊的土地上有些什麼值得探討的Solution。

Ø Open Source

開源方面一直與.NET保持一定距離,O/R Mapping更是寥寥無幾,但就作者的下載試用和源碼分析來看,個人以為如下的兩個解決方案還是有一定參考價值的:OPF,OJB。

有關這兩個開源項目的簡介,大家可以參考“程式員,2004.01,P13”。

OPF的全稱是:Object Persistent Framework。

OJB的全稱是:ObJect Relational Bridge。



在實現手法上,這兩個方案的思路完全不同,具有各自的代表性。

OPF走的路線有點類似於Typed DataSet或Borland ECO(請參考下面的介紹),實現比較簡單,提供更多的源碼級控制;而OJB的實現則類似於Microsoft ObjectSpaces(請參考下面的介紹),採用了設定檔的方式,相對就比較複雜了。



這兩個方案的基本架構如下所示:

OPF:




從圖中不難看出:

(1) Persistent類扮演了DataSet的角色,除了常規的對象資料操作外,還可以設定不同對象間的關係(如主從關係,集合關係等,這一點在Borland ECO所產生的程式碼中也可略見一二),這也是上文所說“提供更多源碼級控制”的原因所在;



(2) PersistentSqlDataManager則扮演了DataAdapter的角色,通過預先設定的Commands來執行真正的資料庫操作;在實際撰寫的employee data manager中,開發人員確實需要提供基本的SQL語句,就像在SqlCommond中設定的那樣(Borland ECO則更進一步,以OCL代替了SQL);



(3) ObjectBroker的作用非常重要,它是對象與資料間的橋樑,RegisterPersistent方法建立了這種虛擬(Object)與現實(RDBMS)間的關係;



(4) 在employee business object的聲明中,對象屬性與資料庫欄位的對應關係是通過.NET Attribute機制體現的,所以修改起來還是比較方便的,雖然相比設定檔的方式顯得不夠靈活(請參考OJB的介紹),比如:需要重新編譯,開發人員不得不關注資料庫欄位等。



OJB:




從圖中不難看出:

(1) 該方案的實現比較複雜,但使用者需要實際撰寫的代碼變少了(只需要編寫employee business object),這其中的關鍵就在於引入了設定檔;同時,由於設定檔的引入,我們在hello world application中也不需要調用類似OPF解決方案(請參考上文的OPF類圖)中的RegisterObject方法,所有這一切(甚至包括資料庫連接資訊),系統都已了如指掌!



(2) 該方案中,SQL命令通過Criteria類被徹底替代,而QueryFacade則充當了Adapter的功能,通過PersistenceBroker這一真正的Command與資料庫進行通訊;



(3) 無論是repository.xml設定檔,還是Criteria、QueryFacade類,我們都可以在ObjectSpaces(請參考下面的介紹)中找到類似的實現(難道是巧合?),同時,作者個人以為,這種方式也更符合O/R Mapping的精神,減輕了開發人員的負擔!



(4) OJB還有一個非常cool的工具“repositorygen.exe”,可以用來產生repository.xml設定檔(同樣的,源碼無償奉上J),這一點,甚至連ObjectSpaces都沒能做到(想想那麼多欄位、屬性、關聯、映射,簡直可以讓人發瘋J)!





相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。