主流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 眼高于头顶
应届毕业生普遍存在的现象,不多说了!
主流ORM对比分析,莫人云亦云的更多相关文章
- Mego(2) - NET主流ORM框架分析
接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM ...
- 前端基本知识(一):W3C标准&&冒泡事件,捕获事件,W3C DOM对象模型,对比分析
W3C标准是万维网联盟, 其他的可以参考万维网版本的更新内容 一.W3C标准 二.W3C DOM事件 三.冒泡事件 四.捕获事件 一.W3C标准 其实网页是由三分部组成:1.结构(structure) ...
- PHP服务器Apache与Nginx的对比分析
PHP服务器Apache与Nginx的对比分析 本篇文章给大家带来的内容是关于PHP服务器Apache与Nginx的对比分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Apach ...
- 面向企业级的开源WebGIS解决方案--MapGuide(对比分析)
在技术特点.功能.架构等方面,MapGuide与其他WebGIS产品有什么区别?本文主要从此角度来介绍MapGuide的特性,以供参考. 本人选择了比较熟悉的几款WebGIS产品:MapServ ...
- 微软和Google的盈利模式对比分析
一: 微软和Google是世界上最成功科技巨头之一,但他们之间却有着不同的产品和业务,二者的盈利方式也各有不同,本文将分析和探讨的二者盈利模式的异同. 微软的盈利模式 在1975年由大学肄业的Bill ...
- 转: 三大WEB服务器对比分析(apache ,lighttpd,nginx) (2008年的旧文,仅供参考之用)
from: http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html 三大WEB服务器对比分析(apache ,lighttp ...
- Apache 流框架 Flink,Spark Streaming,Storm对比分析(2)
此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2.Spark Streaming架构及特性分析 2.1 基本架构 基于是spark core的spark s ...
- 移动应用性能测试剖析以及PerfDog与其他工具的对比分析11.22
商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 导语: 在IT.互联网及游戏行业,软件测试都是一个重要且不可或缺的过程,测试是软件生命周期中的一个重要阶段,是软件质量保证的关键步骤.目 ...
- 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)
如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...
随机推荐
- PHP无限级分类的实现(不使用递归)
无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...
- Windows批处理:配置防火墙规则、开启远程桌面
一.简介 公司主机加入域后,防火墙未进行设置,规则不统一,不少主机ping不通.另打算开启远程桌面,方便远程管理网内每台主机.曾在DC上测试过域组策略内的Windows防火墙设置,无论是新增规则还是直 ...
- gcc/g++中weak弱符号及alias别名
最近查看linux内核代码时,表现了一些编译器选项如__attribute_((weak)).__attribute__( (alias("target"))),一开始不了解,后来 ...
- mysql在linux下的安装
安装环境:系统是 centos6.5 1.下载 下载地址:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 下载版本:我这里选择的5.6. ...
- python3下urlopen解析中文url编码错误
这是在ipython下测试的结果: In [24]: x Out[24]: 'http://127.0.0.1:8000/xxx/?id=a45ex0bad3c9&game=五子棋' In [ ...
- c++中static关键字的用法总结
类中的静态成员真是个让人爱恨交加的特性.我决定好好总结一下静态类成员的知识点,以便自己在以后面试中,在此类问题上不在被动. 静态类成员包括静态数据成员和静态函数成员两部分. 一 静态数据成员: 类体中 ...
- POJ2484 A Funny Game[博弈论]
A Funny Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5401 Accepted: 3381 Desc ...
- Vijos P1196吃糖果游戏[组合游戏]
描述 Matrix67和Shadow正在做一个小游戏. 桌子上放着两堆糖果,Matrix67和Shadow轮流对这些糖果进行操作.在每一次操作中,操作者需要吃掉其中一堆糖果,并且把另一堆糖果分成两堆( ...
- java程序设计线程池(newCachedThreadPool())
创建一个无界的可缓存的线程池,若线程长时间没用会自动销毁,直接上代码好了: import java.util.concurrent.ExecutorService; import java.util. ...
- Map接口使用注意事项
1,Map接口对象本身不能直接使用迭代进行输出的.因为map每个位置存放的是一对值. 而iterator每次只能找到一个值.如果一定要迭代输出,可以通过以下步骤.: 但是,Map接口只作为查找使用,输 ...