【轉載】ORM的概念, ORM究竟是什麼

1、ORM簡介
        對象關係映射(Object Relational Mapping,簡稱ORM)模式是一種爲了解決面向對象與關係數據庫存在的互不匹配的現象的技術。簡單的說,ORM是經過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關係數據庫中。那麼,到底如何實現持久化呢?一種簡單的方案是採用硬編碼方式,爲每一種可能的數據庫訪問操做提供單獨的方法。
        這種方案存在如下不足:
        1.持久化層缺少彈性。一旦出現業務需求的變動,就必須修改持久化層的接口
        2.持久化層同時與域模型與關係數據庫模型綁定,無論域模型仍是關係數據庫模型發生變化,毒藥修改持久化曾的相關程序代碼,增長了軟件的維護難度。
        ORM提供了實現持久化層的另外一種模式,它採用映射元數據來描述對象關係的映射,使得ORM中間件能在任何一個應用的業務邏輯層和數據庫層之間充當橋樑。Java典型的ORM中間件有:Hibernate,ibatis,speedframework。
        ORM的方法論基於三個核心原則:
  · 簡單:以最基本的形式建模數據。
  · 傳達性:數據庫結構被任何人都能理解的語言文檔化。
  · 精確性:基於數據模型建立正確標準化了的結構。
2、ORM的概念
        讓咱們從O/R開始。字母O起源於"對象"(Object),而R則來自於"關係"(Relational)。幾乎全部的程序裏面,都存在對象和關係數據庫。在業務邏輯層和用戶界面層中,咱們是面向對象的。當對象信息發生變化的時候,咱們須要把對象的信息保存在關係數據庫中。
        當你開發一個應用程序的時候(不使用O/R Mapping),你可能會寫很多數據訪問層的代碼,用來從數據庫保存,刪除,讀取對象信息,等等。你在DAL中寫了不少的方法來讀取對象數據,改變狀態對象等等任務。而這些代碼寫起來老是重複的。
        ORM解決的主要問題是對象關係的映射。域模型和關係模型分別是創建在概念模型的基礎上的。域模型是面向對象的,而關係模型是面向關係的。通常狀況下,一個持久化類和一個表對應,類的每一個實例對應表中的一條記錄,類的每一個屬性對應表的每一個字段。
        ORM技術特色:
        1.提升了開發效率。因爲ORM能夠自動對Entity對象與數據庫中的Table進行字段與屬性的映射,因此咱們實際可能已經不須要一個專用的、龐大的數據訪問層。
        2.ORM提供了對數據庫的映射,不用sql直接編碼,可以像操做對象同樣從數據庫獲取數據。
3、ORM的優缺點
        ORM的缺點是會犧牲程序的執行效率和會固定思惟模式。
        從系統結構上來看,採用ORM的系統通常都是多層系統,系統的層次多了,效率就會下降。ORM是一種徹底的面向對象的作法,而面向對象的作法也會對性能產生必定的影響。
        在咱們開發系統時,通常都有性能問題。性能問題主要產生在算法不正確和與數據庫不正確的使用上。ORM所生成的代碼通常不太可能寫出很高效的算法,在數據庫應用上更有可能會被誤用,主要體如今對持久對象的提取和和數據的加工處理上,若是用上了ORM,程序員頗有可能將所有的數據提取到內存對象中,而後再進行過濾和加工處理,這樣就容易產生性能問題。
        在對對象作持久化時,ORM通常會持久化全部的屬性,有時,這是不但願的。
        但ORM是一種工具,工具確實能解決一些重複,簡單的勞動。這是不能否認的。但咱們不能期望工具能一勞永逸的解決全部問題,有些問題仍是須要特殊處理的,但須要特殊處理的部分對絕大多數的系統,應該是不多的。 html

 

【轉自】http://www.javashuo.com/article/p-czzjzkfc-gr.html程序員

相關文章
相關標籤/搜索