什么是ORM?

ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。

ORM实现原理

¤对象到数据库的映射;
¤对象与数据库数据的互相转换;
 
重量级ORM

以EntityFramework、NHibernate为代表

¨优点
面向对象方式访问数据库,摆脱SQL
可移植性强,支持所有流行的数据库
面向接口的设计,可扩充性强
对事务、缓存(一级缓存)有良好的封装及配置
¨缺点
比较复杂,学习曲线大;
处理对象关联很容易出错;
不适合统计查询系统;
对于多表连查,复杂的sql实现比较复杂,而且有可能需要借助其他方案;
自动生成的sql查询执行效率低;
对于大数据量、高负载场景需要慎重考虑;
实现良好的二级缓存很困难,并且只能定制;
 
轻量级ORM
 
 

简介

License

优点

缺点

dapper

单文件、迷你orm框架,支持poco及动态类型

http://code.google.com/p/dapper-dot-net

Apache License 2.0

可以免费商用

执行效率高

单个文件,无其他依赖

使用poco时,属性与数据库表的映射无法灵活配置,难以实现Repository模式

Massive

单文件仅几百行代码,仅支持动态类型

http://blog.wekeroad.com/helpy-stuff/and-i-shall-call-it-massive

New BSD License

可以免费商用

执行效率高

单个文件,无其他依赖

无法使用poco

PetaPoco

单文件、迷你orm框架,支持poco

http://www.toptensoftware.com/petapoco

Apache License 2.0

可以免费商用

执行效率高

单个文件,无其他依赖

poco与数据库表的映射可以灵活配置

密集执行sql时有bug(已修复)

 
重点介绍以下PetaPoco
优点
开源、免费;
执行效率高;
一般仅由一个文件组成,代码量小;
支持poco及动态类型;
缺点

对象关联、事务、缓存等高级特性支持较少。

PetaPoco特性
国内一家sns产品近乎,用的就是petapoco,具体代码情况,可以下载他们的免费源码版本了解一下关于petapoco的使用情况,源码地址:http://www.jinhusns.com/Products/Download?type=whp

特性

支持情况

POCO

支持

自增ID支持

支持

枚举类型支持

支持

事务

支持(但是要求事务内的操作必须在一个PetaPoco database 实例内)

Stored Procedures

支持

基于数据库自动生成POCO

支持

SQL跟踪

支持

支持SQL Server2005~2008r2

支持

支持MySQL

支持

 
 

流行ORM产品优缺点分析--EntityFramework、NHibernate、PetaPoco的更多相关文章

  1. 【转载】ADO.NET与ORM的比较(4):EntityFramework实现CRUD

    [转载]ADO.NET与ORM的比较(4):EntityFramework实现CRUD 说明:个人感觉在Java领域大型开发都离不了ORM的身影,所谓的SSH就是Spring+Struts+Hiber ...

  2. 对Oracle 、SQL Server、MySQL、PostgreSQL数据库优缺点分析

    对Oracle .SQL Server.MySQL.PostgreSQL数据库优缺点分析 Oracle Database Oracle Database,又名Oracle RDBMS,或简称Oracl ...

  3. ORM框架:EF与NHibernate了解

    在.Net Framework SP1微软包含一个实体框架(Entity Framework),此框架可以理解成微软的一个ORM产品.用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储 ...

  4. 三种Tomcat集群方式的优缺点分析

    三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用D ...

  5. python优缺点分析及python种类

    Python的缺点: 相较于其它类型的语言可能运行速度上会略差.C语言的运行性能速度上最好,因为C最接近计算机底层. Python的优点: 大数据处理,有专门的功能模块,比较方便. Linux自带Py ...

  6. JDK和Cglib实现动态代理实例及优缺点分析

    Spring AOP使用的核心技术是动态代理,说到动态代理就不得不和设计模式中的代理模式联系起来,通过代理模式我们可以对目标类进行功能增强,在某个方法的执行前后增加一些操作,例如计算方法执行效率.打印 ...

  7. Javascript中,实现类与继承的方法和优缺点分析

    Javascript是一种弱类型语言,不存在类的概念,但在js中可以模仿类似于JAVA中的类,实现类与继承 第一种方法:利用Javascript中的原型链 //首先定义一个父类 function An ...

  8. JWT 身份认证优缺点分析以及常见问题解决方案

    本文转载自:JWT 身份认证优缺点分析以及常见问题解决方案 Token 认证的优势 相比于 Session 认证的方式来说,使用 token 进行身份认证主要有下面三个优势: 1.无状态 token ...

  9. [转]ORM的优缺点

    ORM[Object-Relation-Mapping]对象关系映射. 这个名词已经出来好几年了.已经不陌生.  以前在项目中针对相对复杂业务逻辑时一般采用领域模型驱动方式进行业务概述,分析和建模. ...

随机推荐

  1. IDisposable的另类用法

    IDisposable是.Net中一个很重要的接口,一般用来释放非托管资源,我们知道在使用了IDisposable的对象之后一定要调用IDisposable.Dispose()方法,或者使用.Net提 ...

  2. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:“如果说我看得比较远的话,那是因为我站在巨人的肩膀 ...

  3. 在C#代码中应用Log4Net(一)简单使用Log4Net

    首先让我们先把Log4Net跑起来,示例代码在文章最后面可以下载 1.先把Log4Net引入到工程中,为了演示方便,我们先建立一个winform程序.在程序的根目录下面,建立一个Libs文件夹,以便存 ...

  4. [译]Asp.net MVC 之 Contorllers(一)

    Asp.net MVC contorllers 在Ajax全面开花的时代,ASP.NET Web Forms 开始慢慢变得落后.有人说,Ajax已经给了Asp.net致命一击.Ajax使越来越多的控制 ...

  5. .Net组件程序设计之异步调用

    .Net组件程序设计之异步调用 说到异步调用,在脑海中首先想到就是BeginInvoke(),在一些常用对象中我们也会常常见到Invoke()和BeginInvoke(), 要想让自己的组件可以被客户 ...

  6. LeetCode Note 1st,practice makes perfect

    1. Two Sum Given an array of integers, return indices of the two numbers such that they add up to a ...

  7. mock.js

    mock.js http://mockjs.com/ https://github.com/nuysoft/Mock/wiki 为了完成angularjs的karma测试,看到这个好东东,这货能拦截a ...

  8. DAC Usage2:通过DAC实现DB Schema的Migration和Upgrade

    一,Introduce Extract DAC 是从现存的DB中创建DAC,抽取DB Object的definition 和 与之相关的实例级别的元素,比如Login,以及Login 和User之间的 ...

  9. 使用HTML5里的classList操作CSS类

    在HTML5 API里,页面DOM里的每个节点上都有一个classList对象,程序员可以使用里面的方法新增.删除.修改节点上的CSS类.使用classList,程序员还可以用它来判断某个节点是否被赋 ...

  10. 用pageGroup.js实现分页功能

    1.html页面中 引入 <link rel="stylesheet" type="text/css" href="/stylesheets/p ...