目前主流的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对比分析,莫人云亦云的更多相关文章

  1. Mego(2) - NET主流ORM框架分析

    接上文我们测试了各个ORM框架的性能,大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异.这里和大家分享下我对ORM框架的理解及一些使用经验. ORM框架工作原理 典型ORM ...

  2. 前端基本知识(一):W3C标准&&冒泡事件,捕获事件,W3C DOM对象模型,对比分析

    W3C标准是万维网联盟, 其他的可以参考万维网版本的更新内容 一.W3C标准 二.W3C DOM事件 三.冒泡事件 四.捕获事件 一.W3C标准 其实网页是由三分部组成:1.结构(structure) ...

  3. PHP服务器Apache与Nginx的对比分析

    PHP服务器Apache与Nginx的对比分析 本篇文章给大家带来的内容是关于PHP服务器Apache与Nginx的对比分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Apach ...

  4. 面向企业级的开源WebGIS解决方案--MapGuide(对比分析)

    在技术特点.功能.架构等方面,MapGuide与其他WebGIS产品有什么区别?本文主要从此角度来介绍MapGuide的特性,以供参考.    本人选择了比较熟悉的几款WebGIS产品:MapServ ...

  5. 微软和Google的盈利模式对比分析

    一: 微软和Google是世界上最成功科技巨头之一,但他们之间却有着不同的产品和业务,二者的盈利方式也各有不同,本文将分析和探讨的二者盈利模式的异同. 微软的盈利模式 在1975年由大学肄业的Bill ...

  6. 转: 三大WEB服务器对比分析(apache ,lighttpd,nginx) (2008年的旧文,仅供参考之用)

    from:  http://www.blogjava.net/daniel-tu/archive/2008/12/29/248883.html 三大WEB服务器对比分析(apache ,lighttp ...

  7. Apache 流框架 Flink,Spark Streaming,Storm对比分析(2)

    此文已由作者岳猛授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 2.Spark Streaming架构及特性分析 2.1 基本架构 基于是spark core的spark s ...

  8. 移动应用性能测试剖析以及PerfDog与其他工具的对比分析11.22

    商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 导语: 在IT.互联网及游戏行业,软件测试都是一个重要且不可或缺的过程,测试是软件生命周期中的一个重要阶段,是软件质量保证的关键步骤.目 ...

  9. 浅谈C++之冒泡排序、希尔排序、快速排序、插入排序、堆排序、基数排序性能对比分析之后续补充说明(有图有真相)

    如果你觉得我的有些话有点唐突,你不理解可以想看看前一篇<C++之冒泡排序.希尔排序.快速排序.插入排序.堆排序.基数排序性能对比分析>. 这几天闲着没事就写了一篇<C++之冒泡排序. ...

随机推荐

  1. 使用eclipse开发Morphline的Java代码段

    背景:morphline是一个轻量级的etl工具.除了提供标准化的方法之外,还可以定制化的开发java片段.定制化的java片段会在加载时被作为一个独立的类编译,对源数据作处理. morphline关 ...

  2. CentOS系统 yum 安装 iftop实时流量监控工具

    一. 不多说其他的无用话题.直接看步骤: 1.要安装某个工具,首先得知道这个工具需要依赖包. eg:iftop 就依赖 以下这几个依赖包(不清楚工具依赖什么包“Google.百度”). flex   ...

  3. 【转】Java并发编程:volatile关键字解析

    转自:http://www.importnew.com/18126.html#comment-487304 volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备 ...

  4. iptables中文介绍 、基本使用操作命令(转)

    iptables 命令介绍   原文链接http://www.cnblogs.com/wangkangluo1/archive/2012/04/19/2457072.html iptables防火墙可 ...

  5. APUE环境配置

    1.到http://www.apuebook.com/选择相应的版本下载源码,我的是2013版的 2.将apue.h拷到/usr/include目录下 3.将error.c拷到源文件下,编译的时候带上 ...

  6. 在MySQL中,如何计算一组数据的中位数?

    要得到一组数据的中位数(例如某个地区或某家公司的收入中位数),我们首先要将这一任务细分为3个小任务: 将数据排序,并给每一行数据给出其在所有数据中的排名. 找出中位数的排名数字. 找出中间排名对应的值 ...

  7. PuTTY配置

    目录 1.作用? 2.中文问题解决 ? 3.GUI支持? 4.使用密钥对实现安全快捷的无密码登陆? 5.操作习惯(Alt+Enter全屏以及字体配置) 6.附录(sshd服务器配置) 1.作用? Pu ...

  8. [diango]批量导入不重复数据

    去年研究导入数据的时候写了一个批量导入数据的脚本,但有个问题,如果导入这批数据在数据库中已经存在,那么我们导入的数据不就重复了么,本文就讨论如何解决这个问题? 程序如下: #coding:utf-8 ...

  9. 使用Vmware虚拟机部署开发环境之Mac OS X系统安装

    一.使用VMware虚拟机部署Swift开发环境所需工具: Vmware Workstation 10.0虚拟机软件 VM安装Mac解锁工具Unlock 苹果操作系统(Mac OS X Maveric ...

  10. 帆软报表FineReport中数据连接之Tomcat配置JNDI连接

    1. 问题描述 在帆软报表FineReport中,通过JNDI方式定义数据连接,首先在Tomcat服务器配置好JNDI,然后在设计器中直接调用JNDI的名字,即可成功使用JNDI连接,连接步骤如下: ...