我所認識的O/R Mapping 之 XPO

來源:互聯網
上載者:User

(事先聲明,我對.Net非常之不熟悉,同時英文水平很差,所以我所理解的各個O/R Mapping產品特性也許是錯誤的,希望有人能夠指證出來,也好讓我改正錯誤,所以這些寫出來的東西可能是錯的,但是說錯並不可怕,只要你說過了)

    O/R Mapping在Java世界是盡人皆知,而.Net下也越來越被大家所關注,同時這類產品也已經出來了不少,我想就某些比較流行的方案說一下它們各自的特性和缺點,同時會穿插我本來對O/R Mapping的理解和期望,同時也表示我正式開始.Net下的軟體開發。

    我也許會繼續寫下去,也許不會,看時間而定了,我主要比較的特性分以下幾個方面:

DB->Class or Class->DB
多資料庫支援
Mapping方式
關係映射
實體類的複雜性
實體集合返回方式
Null值處理
Lazy-loading
Session管理
交易處理
Cache
OQL語言支援
Criteria查詢構造
部分屬性查詢和運算式構造
資料繫結支援
BLOB支援
其它資料對象的映射支援(sp、view)
計算欄位的支援
批次更新和累加式更新操作的支援

    大家最近談得比較多的XPO,那麼就它先吧。(未完,因為要睡覺了)

        O/R Mapping之XPO

出品:Dev Express
最新版本:1.5

1、DB->Class or Class->DB

    XPO兩者都支援,但它更像是一個Class->DB的持久化方案,因為它的session支援根據class直接產生資料庫schema。

2、多資料庫支援

    內部實現中XPO同樣抽象出了資料訪問層,理論上它可以支援任何資料庫,雖然目前只支援MSSQL和Access。
但是從它定義的ConnectionProvider來看,它對資料庫的特性支援非常有限。

3、Mapping方式
    因為是.Net下的持久層,所以XPO也不例外地使用了自訂屬性來處理映射,同時支援最小情況下的無須任何屬性便可完成映射(當時實體類要繼承基類)。它的映射可以支援:名稱映射、索引建立、選擇性映射、關係映射、實體類繼承、串聯更新、遲載入、鎖定類型、NULL處理等功能,基本上可以滿足CRUD和類之間的關係維護。因為XPO偏重的是Class->DB,所以它並沒有提供類代碼產生器。

4、實體類的複雜性
    實體類必須從XPO的實體基類上繼承,以實現實體類的狀態管理,這樣做的好處是可以直接調用實體類的save來實現持久儲存資料。XPO有一個預設的session,而且當實體類沒有明確指定session時,一切對象的儲存都會調用預設的session.save來完成,而這個預設的session又有一個預設的Access的ConnectionProvider,它可以自動完成資料庫Schema的構造工作,所以有時候XPO的tutorial看上去就是那麼的"簡單":定義實體類->建立實體類->調用實體類的Save。

5、CRUD
    這是O/R Mapping最基本也是使用得最多的一個功能了,XPO在這一點上做得還算是中規中矩。但是:
        (1)它因為沒有使用代理機制攔截屬性賦值,所以它無法實現只對修改過的值進行操作,在儲存時所有可持久化屬性都將被更新到資料庫中,這點在多點並發情況下是致命的。
        (2)它居然無法通過主鍵來retrive資料,只能通過XPCollection或XPCursor來獲得,每次都寫Critiria來查詢資料,多累啊!(經Yok指證,可以通過session.getobjectbykey實現)

6、實體集合返回方式
    Dev在這個處理和我一直以來的處理方式的表現形式非常相似,它利用XPCollection和XPCursor來實現實體集合和資料集的封裝,前者是一個”重量級“的集合,但在這個集合中的資料都會一直存在緩衝中,並且支援大量操作;而XPCursor就比較輕了,它可以通過PageSize來設定頁大小,從而每次只裝載當前頁到一個XPCollection中以供遍曆。
為什麼我只說是表現形式和我的處理方式相似呢,因為我在處理資料集封裝時是一直重用一個實體類執行個體,但是XPO因為需要維護記憶體對象,抑或是.Net下對象開銷比較便宜吧。

聯繫我們

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

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

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.