主流ORM對比分析,莫人雲亦雲


目前主流的ORM框架有Entity Framework,Dapper,NHibernate,NBear,Castle ActiveRecord,BATIS.NET六種,都是免費開源的。下邊從官方支持性,數據庫支持性,開發周期,運行效率幾方面進行對比。

1.1         官方支持性

Entity Framework,Dapper,NHibernate,Castle ActiveRecord,BATIS.NET五種都有官方支持,NBear已經停止更新,因此NBear不在使用之列。

 

1.2         數據庫支持性

 主流的ORACLE,MSSQL,MYSQL三種主流數據庫官方提供對Entity Framework的支持,其余4種均為第三方公司提供的框架。

1.3         開發周期

Entity Framework不需要編寫配置文件,不需要編寫sql語句,有代碼生成器,可直接使用原始項目的實體文件;

Dapper類似於Entity Framework  codefirst模式,但是需要在數據庫訪問層編寫sql語句;

NHibernate需要編寫配置文件,開發周期最長;

Castle ActiveRecord 基於NHibernate開發,改用Attribute來代替配置文件,沒有本質的區別;

iBATIS.NET與NHibernate類似,需要編寫配置文件。

1.4         運行效率

NHibernate系的效率的最低的,沒有任何的疑問!

很多人毫無疑問的會認為Dapper的效率最高,其基於Emit開發,但是在實際的性能測試中Entity Framework效率最高(參看http://www.cnblogs.com/bluedoctor/p/3378683.html)。

    通過綜合的分析,Entity Framework最適合做數據庫持久層。

 

ORM與ado.net對比

絕大多數人會認同網上廣為傳播的說法,因為鋪天蓋地的orm弊端已經廣為深入人心。現在對其進行批駁:

1、orm大量使用反射,拖慢效率

   如果現在還有人提這種說法,說明這種人是多么的out,或者這種人不能勝任技術,轉行做了管理。泛型委托+反射+緩存的機制很早就已經解決了這個問題。

2、orm要先生成sql語句,這個過程慢

我覺得統一這種觀點的人根本就沒有在應用程序中寫過sql。因為sql基本都是通過拼湊字符串,很多人都是通過+=來做的,而且根本就不會寫優秀的sql語句,你寫的sql語句在oracle性能測評工具中是頂級sql嗎?高校的查詢分頁有幾個人會寫? orm都是有官方支持的,是會翻譯成最頂級的sql去執行的!你在開發中不會用到實體?

3、懶

很多人停留在老技術,老風格的層面,學了c,認為優秀的開發語言都應該c風格的,對與語言化的linq總是持否定態度,net2.0 是多少年前的了?

4 眼高於頭頂

應屆畢業生普遍存在的現象,不多說了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM