什么是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. java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**

    在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...

  2. 如何调试ANDROID下面黑屏问题

    最近很多朋友在问,为毛在WINDOWS下对了,跑ANDROID的虚拟机或者真机就黑屏了, 有的是只有FPS信息,有的是连FPS信息都没有.如果是程序能够正常启动,不会闪退,但显示不对. 那十有八九都是 ...

  3. 【原】Telerik radwindow 在IE10下偶尔报 unable to get value of the property 'toLowerCase' 的解决办法

    笔者正在开发的新项目在升级了最新版本的Telerik Control和决定支持IE10后,遇到了一个很棘手的问题,偶尔会在打开Radwindow的时候报JS error :unable to get ...

  4. PHP类的封装和做投票和用进度条显示

    三处理传过来的数据1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  5. PHP制作查询租房表

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. volatile用法

    1.volatile 主要是 其 "可见性",在java内存模型中,变量都是放在主内存中,每条线程里面有自己的工作内存,当一个变量被volatile 修饰时候,其他的线程会得到该变 ...

  7. MyBatis-Exception:org.apache.ibatis.exceptions.PersistenceException

    错误信息如下: HTTP Status 500 - org.mybatis.spring.MyBatisSystemException: nested exception is org.apache. ...

  8. Sql Server系列:数据类型转换函数

    T-SQL提供了两个显示转换的函数:CAST函数和CONVERT函数. 1. CAST函数 语法: CAST ( expression AS data_type [ ( length ) ] ) 示例 ...

  9. 学习3ds max插件开发过程中的一些小结

    1. 3ds max是以树状结构来管理整个场景的,每个树节点类型为INode 2. Interface类很关键,可以通过其中的GetRootNode.NumberOfChildren和GetChild ...

  10. OpenCASCADE BRep vs. OpenNURBS BRep

    OpenCASCADE BRep vs. OpenNURBS BRep eryar@163.com Abstract. BRep short for Boundary Representation. ...