由ORM談資料持久化,orm談

來源:互聯網
上載者:User

由ORM談資料持久化,orm談

 

什麼是ORM

         ORM(ObjectRelational Mapping)對象-關係映射,是隨著物件導向的軟體開發發展而產生的。ORM是一種程式技術,用於實現物件導向程式設計語言裡不同類型系統的資料之間的轉換。從效果上說,它其實是建立了一個可在程式設計語言裡使用的“虛擬對象資料庫”即將關聯式資料庫在程式設計語言中以對象的形式出現。

 

為什麼要用ORM

  1:直觀上來說幾乎在所有的物件導向程式裡面,都存在對象和關聯式資料庫。在商務邏輯層和使用者介面層中,我們是物件導向的,但是當對象資訊發生改變的時候,我們需要把對象的資訊儲存在關聯式資料庫中。這樣程式員不僅僅要鑽研商務邏輯和UI代碼還要專註於SQL等資料庫動作陳述式。ORM的出現讓程式員在一定程度上擺脫了SQL,專註於商務邏輯等,讓開發效率更高。

2:從O-R來看,除了1中所說方便操作之外,我們為什麼要將關係型資料庫轉化為Object,DataSet不好嗎?

  我們知道Object是可以繼承的,也是可以使用介面的,可以說Ralation轉換成Object之後不僅僅是形式發生了變化,關鍵是讓原來的Ralation有了物件導向的特性。

例如:我可以在程式中檢測實體是否支援IVersionObject介面,如果支援,我們將自動做版本控制,而如果你給我一個DataSet,那我將無法檢測(不要告訴我檢測是否存在Version欄位)。通過這個特性我們將可以自動化處理很多的事情。
又如,我設計了一個單據實體的基類,包含了SheetCode、SheetDate等等欄位,然後我的OrderSheet繼承自SheetBase,他們將自動擷取到這些標準的欄位,而且我的基礎類可以自動協助我處理很多統一的規則,使程式更加穩健和統一。而這個Relation的東西是非常難做到的。

 

資料持久化

         最近學習了微軟的EF(EntityFramwork),作為ORM(Object Relational Mapping)架構在.net上的一種實現,在EF學習過程中有個很有意思的詞-“資料持久化”,讓我很不理解,都說EF實現了資料持久化,那麼到底

什麼才是資料持久化?

        資料持久化就是將記憶體中的資料模型轉換為儲存模型,以及將儲存模型轉換為記憶體中的資料模型的統稱. 資料模型可以是任何資料結構或物件模型,儲存模型可以是關聯式模式、XML、二進位流等---百度百科

       狹義的理解,持久化僅僅是指把對象資料永久儲存在資料庫中,廣義的理解,持久化包括和資料庫相關的各種操作。

       個人理解,狹義的資料持久化中的持久化是相對於“暫時”等概念來說的,資料在電腦中一般由兩個儲存地,記憶體為暫存,資料庫可以理解為永存。這樣來說之前開發中ADO.NET訪問資料庫也就是資料持久化,再延伸一點,所有與資料庫有關的操作都可以看成資料持久化?(困惑於此,希望大家有不同理解,多多討論指教)

       廣義的持久化,就是像EF等技術,封裝了資料訪問細節,為大部分商務邏輯提供物件導向的API。

為什麼要持久化(廣義)?

       持久化技術封裝了資料訪問細節,為大部分商務邏輯提供物件導向的API。

● 通過持久化技術可以減少訪問資料庫資料次數,增加應用程式執行速度;

● 代碼重用性高,能夠完成大部分資料庫操作;

● 鬆散耦合,使持久化不依賴於底層資料庫和上層商務邏輯實現,更換資料庫時只需修改設定檔而不用修改代碼。

 

相關文章

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.