11.ORM介紹

了解orm,先了解以下概念:

  • 什么是“持久化”
    持久(Persistence),即把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁盤)。持久化的主要應用是將內存中的數據存儲在關系型的數據庫中,當然也可以存儲在磁盤文件中、XML數據文件中等等。
  • 什么是 “持久層”
    持久層(Persistence Layer),即專注于實現數據持久化應用領域的某個特定系統(tǒng)的一個邏輯層面,將數據使用者和數據實體相關聯(lián)。

一、什么是ORM

  • 對象關系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。那么,到底如何實現持久化呢?一種簡單的方案是采用硬編碼方式,為每一種可能的數據庫訪問操作提供單獨的方法。
  • ORM提供了實現持久化層的另一種模式,它采用映射元數據來描述對象關系的映射,使得ORM中間件能在任何一個應用的業(yè)務邏輯層和數據庫層之間充當橋梁。Java典型的ORM中間件有:Hibernate,ibatis,speedframework。
  • 這種方案存在以下不足:
    1. 持久化層缺乏彈性。一旦出現業(yè)務需求的變更,就必須修改持久化層的接口
    2. 持久化層同時與域模型與關系數據庫模型綁定,不管域模型還是關系數據庫模型發(fā)生變化,毒藥修改持久化曾的相關程序代碼,增加了軟件的維護難度。
  • ORM的方法論基于三個核心原則:
  1. 簡單:以最基本的形式建模數據。
  2. 傳達性:數據庫結構被任何人都能理解的語言文檔化。
  3. 精確性:基于數據模型創(chuàng)建正確標準化了的結構。

二、ORM的概念

  • 讓我們從O/R開始。字母O起源于"對象"(Object),而R則來自于"關系"(Relational)。幾乎所有的程序里面,都存在對象和關系數據庫。在業(yè)務邏輯層和用戶界面層中,我們是面向對象的。當對象信息發(fā)生變化的時候,我們需要把對象的信息保存在關系數據庫中。
  • 當你開發(fā)一個應用程序的時候(不使用O/R Mapping),你可能會寫不少數據訪問層的代碼,用來從數據庫保存,刪除,讀取對象信息,等等。你在DAL中寫了很多的方法來讀取對象數據,改變狀態(tài)對象等等任務。而這些代碼寫起來總是重復的。
  • ORM解決的主要問題是對象關系的映射。域模型和關系模型分別是建立在概念模型的基礎上的。域模型是面向對象的,而關系模型是面向關系的。一般情況下,一個持久化類和一個表對應,類的每個實例對應表中的一條記錄,類的每個屬性對應表的每個字段。
  • ORM技術特點:
  1. 提高了開發(fā)效率。由于ORM可以自動對Entity對象與數據庫中的Table進行字段與屬性的映射,所以我們實際可能已經不需要一個專用的、龐大的數據訪問層。
  2. ORM提供了對數據庫的映射,不用sql直接編碼,能夠像操作對象一樣從數據庫獲取數據。

三、ORM的優(yōu)缺點

  • ORM的缺點是會犧牲程序的執(zhí)行效率和會固定思維模式。
    從系統(tǒng)結構上來看,采用ORM的系統(tǒng)一般都是多層系統(tǒng),系統(tǒng)的層次多了,效率就會降低。ORM是一種完全的面向對象的做法,而面向對象的做法也會對性能產生一定的影響。
  • 在我們開發(fā)系統(tǒng)時,一般都有性能問題。性能問題主要產生在算法不正確和與數據庫不正確的使用上。ORM所生成的代碼一般不太可能寫出很高效的算法,在數據庫應用上更有可能會被誤用,主要體現在對持久對象的提取和和數據的加工處理上,如果用上了ORM,程序員很有可能將全部的數據提取到內存對象中,然后再進行過濾和加工處理,這樣就容易產生性能問題。
  • 在對對象做持久化時,ORM一般會持久化所有的屬性,有時,這是不希望的。
  • 但ORM是一種工具,工具確實能解決一些重復,簡單的勞動。這是不可否認的。但我們不能指望工具能一勞永逸的解決所有問題,有些問題還是需要特殊處理的,但需要特殊處理的部分對絕大多數的系統(tǒng),應該是很少的。

Spring支持的ORM:

  1. Hibernate
  2. iBatis
  3. JPA (Java Persistence API)
  4. TopLink
  5. JDO (Java Data Objects)
  6. OJB

進階學習參考 編寫ORM

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容