ORM技術實現原理
對象關系映射(ORM)是一層使用面向對象編程(OOP)語言在數據庫和面向對象實體之間轉換我們的數據的層。
什么是ORM,它如何工作?
開發適合業務服務的應用程序并同時促進其轉換絕對是一個集思廣益的任務。每當企業考慮開發應用程序時,他們還需要考慮其可維護性,根據技術進行升級并提高整體性能。這些必不可少的因素可使應用程序長時間穩定運行,并幫助企業使用ORM工具針對大多數應用程序獲得最佳結果。這些工具幫助他們將數據庫設計與面向對象的設計分開。但是同時,如果應用程序的性能也是一個重要因素,那么軟件開發人員也應該添加此性能因素決定選擇ORM軟件時將其移至列表中。否則,經過很長時間,使用該ORM可能難以處理性能因素。
什么是對象關系映射(ORM)?
對象關系映射(ORM)是一層使用面向對象編程(OOP)語言在數據庫和面向對象實體之間轉換我們的數據的層。
市場上有幾種ORM工具。下面給出了一些構建應用程序所需的最常用工具,它們是
Entity Framework
Dapper
NHibernate
在本文中,我們將比較ORM與ADO.NET的不同功能。我們還將使用一個示例項目來比較這兩個框架的性能。這樣可以幫助我們選擇最適合我們的應用程序需求的ORM。
ORM中的功能比較
不同的ORM支持不同的功能,為了進行比較,我們在下面列出了不同的ORM的已知和常用功能及其方便的輸出。
ORM中的性能比較
要衡量性能,軟件開發人員將必須實際檢查不同ORM的性能。用戶可以從此處下載示例項目和所需的數據庫腳本文件。然后,稍后開始設置數據庫環境。
環境設置–數據庫
創建具有三個不同表的數據庫架構。您可以使用schema.sql腳本文件來創建數據庫。并使用data.sql腳本文件生成偽數據。您可以通過示例項目找到腳本文件和偽數據文件。
項目(與團隊表具有1到n的關系)
團隊(與TeamMember表成1到n的關系)
團隊成員
環境設定
為了進行性能測試,我們添加了,
Project有500個數據,Team有1000個數據,TeamMember有1000000個數據
我們將執行查詢,以在多次迭代中獲得以下結果,
通過TeamMemberId獲取TeamMember
通過TeamId獲取TeamMembers
通過ProjectId獲取TeamMembers
對于我們的性能測試,我們專用的軟件開發團隊創建了一個示例項目,并為每個框架添加了一個圖層類。圖層類連接并執行查詢到數據庫。因此,基本上,我們將檢查給定框架創建查詢,獲取結果以及映射對象的速度。
如果您注意到了結果,那么在包括模型映射以及禁用更改跟蹤之后,所有ORM在執行時間上幾乎有很大差異。同樣,對于第一個迭代,EF&EF Core消耗的執行時間比其他迭代要多一些,但是在下一個迭代中,兩者的執行時間幾乎相同。
修改樣本
您也可以瀏覽示例項目以獲取更多詳細信息。根據您的要求,您可以修改腳本以添加虛擬數據并修改常量參數(例如“迭代次數”,每個表的總計數)。
快速回顧
始終最好使用正確的工具完成正確的工作。
在本文中,我們的軟件程序員比較了不同ORM支持的常用功能。此外,我們已經檢查了ORM在不同查詢結果上的性能。因此,根據軟件開發人員的要求,我們全面描述了每個功能的工作原理,現在您可以通過簡化的方法為任何應用程序選擇正確的ORM框架。