什么是ORM?為什么用ORM?淺析ORM的使用及利弊

2021-03-10    分類: 網站建設

什么是ORM

ORM(Object-relational mapping),中文翻譯為對象關系映射,是一種為了解決面向對象與關系數據庫存在的互不匹配的現象的技術。簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據,將程序中的對象自動持久化到關系數據庫中。

ORM

為什么用ORM

在程序開發中,數據庫保存的表,字段與程序中的實體類之間是沒有關聯的,在實現持久化時就比較不方便。那么,到底如何實現持久化呢?一種簡單的方案是采用硬編碼方式,為每一種可能的數據庫訪問操作提供單獨的方法。這種方案存在以下不足:

  • 1.持久化層缺乏彈性。一旦出現業務需求的變更,就必須修改持久化層的接口
  • 2.持久化層同時與域模型與關系數據庫模型綁定,不管域模型還是關系數據庫模型發生變化,毒藥修改持久化曾的相關程序代碼,增加了軟件的維護難度

ORM提供了實現持久化層的另一種模式,它采用映射元數據來描述對象關系的映射,使得ORM中間件能在任何一個應用的業務邏輯層和數據庫層之間充當橋梁

ORM的方法論基于三個核心原則:

  • 簡單:以最基本的形式建模數據
  • 傳達性:數據庫結構被任何人都能理解的語言文檔化
  • 精確性:基于數據模型創建正確標準化了的結構

本文以C#編程語言為例,在傳統的數據讀取操作中,我們以Ado.net的方式對數據庫進行CRUD操作,使用的基本都是SQL硬編碼,比如有以下數據庫查詢操作:

String sql = "SELECT ... FROM persons WHERE id = 10";
DbCommand cmd = new DbCommand(connection, sql);
Result res = cmd.Execute();
String name = res[0]["FIRST_NAME"];

使用了ORM映射的C#實現的偽代碼:

Person p = repository.GetPerson(10);
String name = p.getFirstName();

上面的示例代碼表示我們可以從數據倉庫repository中獲取到一個實體對象,當然數據倉庫中可能包含其他的方法,你也可以定義自己的ORM實現,比如:

Person p = Person.Get(10);

通常,在處理ORM映射和數據倉庫時會暴露一些過濾或者查詢方法,允許客戶端對數據集進行進一步的篩選等操作,比如代碼演示從數據庫中查詢ID=10的用戶:

Person p = Person.Get(Person.Properties.Id == 10);

優/缺點

優點

與傳統的數據庫訪問技術相比,ORM有以下優點:

  • 開發效率更高
  • 數據訪問更抽象、輕便
  • 支持面向對象封裝

缺點

  • 降低程序的執行效率
  • 思維固定化

從系統結構上來看,采用ORM的系統一般都是多層系統,系統的層次多了,效率就會降低。ORM是一種完全的面向對象的做法,而面向對象的做法也會對性能產生一定的影響。

在我們開發系統時,一般都有性能問題。性能問題主要產生在算法不正確和與數據庫不正確的使用上。ORM所生成的代碼一般不太可能寫出很高效的算法,在數據庫應用上更有可能會被誤用,主要體現在對持久對象的提取和和數據的加工處理上,如果用上了ORM,程序員很有可能將全部的數據提取到內存對象中,然后再進行過濾和加工處理,這樣就容易產生性能問題。

總結

作為一名編程人員,在ORM使用的觀念上會有不同,具體取舍需根據具體的項目和場景。

當前題目:什么是ORM?為什么用ORM?淺析ORM的使用及利弊
URL標題:http://m.kartarina.com/news/104946.html

成都網站建設公司_創新互聯,為您提供定制開發企業網站制作虛擬主機網站維護網站策劃自適應網站

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都定制網站建設
主站蜘蛛池模板: 久久久无码一区二区三区| 中文字幕乱偷无码AV先锋| 午夜福利av无码一区二区| 无码性午夜视频在线观看| 中文有码vs无码人妻| 中文无码精品A∨在线观看不卡| 亚洲av无码专区亚洲av不卡| heyzo专区无码综合| 免费看成人AA片无码视频羞羞网| 色综合色国产热无码一| 人妻av无码一区二区三区| 无码专区一va亚洲v专区在线| 久久无码人妻一区二区三区午夜 | 无码熟妇人妻av| 成人无码区免费A∨直播| 中文字幕无码高清晰| 八戒理论片午影院无码爱恋| 国产成人年无码AV片在线观看| 久久久久久无码Av成人影院| 亚洲国产精品无码久久久不卡| 2020无码专区人妻系列日韩| 亚洲AV无码专区在线电影成人| 精品无码一区二区三区电影| 伊人久久精品无码av一区| 少妇无码太爽了在线播放| 亚洲AV无码专区日韩| 99久无码中文字幕一本久道| 无码中文在线二区免费| 无码被窝影院午夜看片爽爽jk | 日日摸日日碰人妻无码| 高清无码v视频日本www| 中文字幕日产无码| 亚洲AV无码专区国产乱码不卡| 精品视频无码一区二区三区| 日韩精品中文字幕无码一区| 久久久久无码精品国产不卡| 亚洲AV成人无码天堂| 无码中文av有码中文av| a级毛片无码免费真人| 精品久久久无码中文字幕天天| 亚洲国产91精品无码专区|