什么是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. Expert 诊断优化系列------------------冤枉磁盘了

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

  2. 新浪微博UWP版-实现‘分享功能’的艰难路

    索引 介绍 遇到的问题 寻求帮助 最终的解决方案 最终效果 介绍 在整个Team的共同努力下,在众多WPer的期待下,Weibo UWP版终于正式发布了.有关Weibo UWP版更多的信息请大家参考这 ...

  3. 一个App完成入门篇(六)- 完成通讯录页面

    第五章和第六章间隔时间有点长,对不起大家了.下面继续. 本节教程将要教会大家如何加载本地通讯录. 导入项目 导入通讯录 自定义js模块 发送和订阅page消息 将要学习的demo效果图如下所示 1. ...

  4. EasyPR--开发详解(3)高斯模糊、灰度化和Sobel算子

    在上篇文章中我们了解了PlateLocate的过程中的所有步骤.在本篇文章中我们对前3个步骤,分别是高斯模糊.灰度化和Sobel算子进行分析. 一.高斯模糊 1.目标 对图像去噪,为边缘检测算法做准备 ...

  5. Docker:镜像操作和容器操作

    镜像操作 列出镜像: $ sudo docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 0a6b ...

  6. react9 生命周期

    <body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...

  7. KnockoutJS 3.X API 第六章 组件(4) 自定义元素

    自定义元素提供了一种将组件注入视图的方便方法. 本节目录 介绍 例子 传递参数 父组件和子组件之间的通信 传递监控属性的表达式 将标记传递到组件中 控制自定义元素标记名称 注册自定义元素 备注1:将自 ...

  8. 动态给div中新增html

    小颖最近接触的项目中用到了    innerHTML 所以小颖今天就自己做了个demo,当当当当代码请看下方: 页面效果:

  9. NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?

    前言 近几天的几篇文章讲的内容非前面内容如系列的讲解,这几天文章都是我在项目中遇到的问题以及重新学习的知识,所以和大家分享一下,关于SQLite的文章多如牛毛,但是有些大多已经过时,为什么说过时,之前 ...

  10. iOS开发之使用CocoaPods更新第三方出现“target overrides the `OTHER_LDFLAGS`……”问题解决方案

    今天在自己的项目中用CocoaPods引入第三方SDWebImage的时候,出现了问题.当更新完毕后,在终端没太注意这个问题的提示,就直接使用SDWebImage了,在使用的时候一些方法的提示和头文件 ...