ORM介紹及ORM優點、缺點

Home / PHP / ORM / ORM介紹及ORM優點、缺點

一、ORM的概念

   Object-Relational Mapping (ORM, O/RM, or O/R mapping)一詞就是將關聯式資料庫映射至物件導向的資料抽象化技術。其理念是將資料庫的內容映射為物件,讓程式開發人員可以用操作物件的方式對資料庫進行操作,而不直接使用SQL語法對資料庫進行操作。讓程式設計師不用管底層的資料庫系統是哪種廠牌或哪個版本的資料庫(如:SQL Server、Oracle、DB2、MySQL、Sybase、DBMaker…),僅須用同一套語法撰寫存取資料庫的邏輯。當底層資料庫的實作品變更時,由於程式設計師並不直接對資料庫進行操作,因此程式內容幾乎不用修改,也就是降低了物件導向程式與資料庫之間的耦合關係

二、為什麽要使用ORM

2.1操作SQL語法的重複性

在ORM之前我們知道通過ADO.NET可以訪問資料庫。或者更進一步,學過三層架構的開發人員,知道可以將通過ADO.NET對資料庫的操作提取到一個單獨的類SqlHelper中,然後在DAL層調用SqlHelper類的方法實現對資料庫的操作。即使你這樣做了,在數據訪問層(DAL)層,還是要寫大量的代碼,而且我們都知道對資料庫的訪問無非增、刪、改、查四種操作,那麼我們很容易想到我們做了大量的重複性工作。只是因為操作的表不同,我們可能需要花費大量的時間編寫針對該表的增刪改查語句,那麼有沒有一種方式能自動生成這些語句呢?這樣的話,我們就可以吧主要的精力或者更多的時間投入到特殊業務的處理上。

2.2 大量SQL語句影響程序的擴展性和靈活性

我們知道之前我們編寫的程序和資料庫之間的耦合性很緊密,如果我們操作的是SQL Server資料庫,我們就需要引入對應的類庫(SqlConnection等),這樣如果需要更換資料庫,那麼,數據訪問層的代碼就需要重新書寫。

在資料庫中表現為關係數據,而在內存中表現為對象。應用程序處理對像很容易,但是很難處理關係數據。 ORM做到了關係數據和對像數據之間的映射,ORM可以通過映射關係自動產生SQL語句,ORM在業務邏輯層和數據層之間充當橋樑。

ORM核心原則:

  1. 簡單性
  2. 傳達性
  3. 精確性

三、ORM的優缺點

   3.1優點

     1、 隱藏了數據訪問細節,“封閉”的通用資料庫交互,ORM的核心。他使​​得我們的通用數據交互變得簡單易行,並且完全不用考慮該死的SQL語句。快速開發,由此而來。

     2、ORM使用我們構造固化數據結構變得簡單易行。

     3、ORM可以防止SQL的注入攻擊(SQL-Injection)

     4、面向對象不用編碼,就可以向操作對像一樣操作資料庫

     5、提高開發效率,ORM可以自動對實體對象與資料庫中表進行字段與屬性的映射,不需要單獨的數據訪問層就可以數據進行增刪改查。

    6、方便轉移資料庫,當資料庫發生改變時,不需要對模型進行改動,只需要修改映射關係就可以了。

  在ORM年表的史前時代,我們需要將我們的對像模型轉化為一條條的SQL語句,通過直連或是DB helper在關係資料庫構造我們的資料庫體系。而現在,基本上所有的ORM框架都提供了通過對像模型關係資料庫結構的功能

  3.2 缺點

    1、無可避免的,自動化意味著映射和關聯管理,代價是犧牲性能(早期,這是所有不喜歡ORM人的共同點)。現在的各種ORM框架都在嘗試使用各種方法來減輕這塊,效果還是很顯著的。

    2、面向對象的查詢語言作為一種資料庫與對象之間的過渡,雖然隱藏了數據層面的業務抽象,但並不能完全的屏蔽掉資料庫層的設計,並且無疑將半圓學習成本

   3、對於複雜查詢,ORM仍然力不從心!雖然可以實現,但是不值的(在Laravel上曾有過這樣的感觸,結果最後還是要寫raw sql)。視圖和存儲可以解決大部份問題

13617 全部 18 今日

One Comment

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

*