NHibernate VS IbatisNet

  NHibernate 是当前最流行的 Java O/R mapping 框架Hibernate 的移植版本,当前版本是 1.0 .2 。它出身于sf.net..IbatisNet 是另外一种优秀的 Java O/R mapping框架,当前版本是 1.2 。目前属于 apache 的一个子项目了。 
相对 NHibernate “ O/R ”而言, IbatisNet 是一种“ Sql Mapping ”的 
ORM实现。
NHibernate 对数据库结构提供了较为完整的封装,NHibernate 的 O/R Mapping 实现了 PO 和数据库表之间的映射,以及 SQL 的自动生成和执行。程序员往往只需定义好了 PO 到数据库表的映射关系,即可通过 NHibernate  提供的方法完成持久层操作。程序员甚至不需要对 SQL 的熟练掌握, NHibernate 会根据制定的存储逻辑,自动生成对应的 SQL 并调用 ADO.NET 
接口加以执行。  
而 IbatisNet 的着力点,则在于 PO 与 SQL 之间的映射关系。也就是说, IbatisNet 并不会为程序员在运行期自动生成 SQL 执行。具体的 SQL 需要程序员编写,然后通过映射配置文件,将 SQL 所需的参数,以及返回的结果字段映射到指定 
PO。
使用 IbatisNet 提供的 ORM 机制,对业务逻辑实现人员而言,面对的是纯粹的 DotNet 对象,这一层与通过NHibernate 实现 ORM 而言基本一致,而对于具体的数据操作, NHibernate 会自动生成 SQL 语句,而 IbatisNet则要求开发者编写具体的 SQL 语句。相对 NHibernate 而言, IbatisNet 以 SQL 开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。 

二者的对比:
1 .   IbatisNet 非常简单易学, NHibernate 相对较复杂,门槛较高。
2 .   二者都是比较优秀的开源产品
3 .   当系统属于二次开发 , 无法对数据库结构做到控制和修改 , 那 IbatisNet 的灵活性将比 NHibernate  更适合
4 .   系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的 SQL 语句(或存储过程)才能达到系统性能设计指标。在这种情况下 IbatisNet 会有更好的可控性和表现。
5 .   IbatisNet 需要手写 sql 语句,也可以生成一部分, NHibernate 则基本上可以自动生成,偶尔会写一些 Hql 。同样的需求 ,IbatisNet 的工作量比NHibernate 要大很多。类似的,如果涉及到数据库字段的修改, NHibernate 修改的地方很少,而IbatisNet 要把那些 sql mapping 的地方一一修改。
6 .   最关键的一句话是 IbatisNet 的作者说的:
If you are starting a new project and you‘re in full control of your object model and database design, NHibernate is a good choice of O/R tool.
If you are accessing any 3rd party databases (e.g. vendor supplied), or you‘re working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That‘s were an SQL Mapper comes in handy

各位国庆开心快乐!

时间: 2024-10-07 10:06:07

NHibernate VS IbatisNet的相关文章

NHibernate与IbatisNet的简单比较

NHibernate是当前最流行的Java O/R mapping框架Hibernate的移植版本,当前版本是1.0 rc-1.它出身于sf.net..IbatisNet是另外一种优秀的Java O/R mapping框架,当前版本是1.3.目前属于apache的一个子项目了.相对NHibernate“O/R”而言,IbatisNet是一种“Sql Mapping”的ORM实现.NHibernate对数据库结构提供了较为完整的封装,NHibernate的O/R Mapping实现了PO 和数据库

DotNet软件开发框架

这是我4月份发在donews博客上的文章,现在都转到博客园来,风满袖希望进一步阐述你的架构,我就将这篇文章转移到博客园.原文:http://blog.donews.com/shanyou/archive/2005/04/23/347792.aspx     以我个人的能力,没有足够的时间和资源自行开发一套完整的平台.在已有的众多开源项目中选择若干优秀的项目进行整合."站在巨人肩膀上"是牛顿有一句名言.,同样适合我们的IT行业. 我对平台的技术架构的构想,是采用开源的ORM框架做数据持久

我大中华微软MVP中国区人才库(转)

出处:http://www.genshuixue.com/i-cxy/p/15349735 刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美国西雅图的微软总部,2009年与业内知名MVP组建易纵互联(北京)科技有限公司并任运营总监.现专注于微软Azure技术领域,在Azure平台进行功能实践和传统Web平台迁移方面有诸多实战经验.陈锐:2002-

再论IBatisNet + Castle进行项目的开发

随着项目的进展,Castle和IBatisNet给我的惊喜更多.Com+很重,不需要分布式的中小项目慎用,NHibernate虽好,NHibernate的2005-9-20发布了最新版本1.0-rc1,缺少高水平的OO设计师,项目组程序员水平参次不齐 ,应用Castle + IBatisnet大家不会再把精力浪费到数据访问,事务处理,主键生成等地方了,可以集中精力进行业务组件的编写.项目的进展很顺利.    从架构上讲,Castle作为轻量级Ioc容器无疑要位于高位,所以iBatisNet现在只

IBatisNet使用教程

 1.是数据持久层,对应.NET方向的有Ibatis.NET,只要用来处理数据库表结构和程序实体之间映射,ado.net是用来处理和数据库直接通信的,取出数据(object,int,string,dataset,datatable等常规类型),通常程序中如果用到MOEDL实体,都需要手动写代码去做类型转换(把datatable的字段赋值到model对应字段),用了数据持久层,这一部就可以省略了,Ibatis.NET可以直接把数据库表字段映射为实体模型,操作简便了. 2.IBatis.net 是2

IbatisNet开发使用小结

一.   介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM框架,使用起来较为方便.灵活.IBatis.Net是从Ibatis的Java版本移植过来的.NET版本.iBATIS作为一种独特的Data Mapper,使用SQL映射的方式将对象持久化至关系型数据库.简单的理解就是它将我们在数据访问层实现的C#逻辑代码,变为通过关系数据库与对象的映射,将SQL逻辑

IbatisNet初学者教程

一.什么是 IbatisNet   : 应该有很多人都听说过Ibatis吧,没错IbatisNet就是Ibatis在.net上的一个移植版本,所以它们俩基本是差不多的.所以IbatisNet自然也是一个轻量级的ORM框架,于是我们又想起来了hibnate和Nhibnate,学习了IbatisNet  ,我会与 Nhibnate做一个简单的对比. 严格的来说IbatisNet并不是一种很正统的ORM解决方案.因为它不像NHibernate那样,具备全自动的数据操作,包括查询,插入,更新,删除,也没

IBatisNet基础组件

DomSqlMapBuilder DomSqlMapBuilder,其作用是根据配置文件创建SqlMap实例.可以通过这个组件从Stream, Uri, FileInfo, or XmlDocument instance 来读取sqlMap.config文件. SqlMap   SqlMap是IBatisnet的核心组件,提供数据库操作的基础平台.SqlMap可通过DomSqlMapBuilder创建.          Assembly assembly = Assembly.Load("IB

[Nhibernate]Nhibernate系列之体系结构

引言 在项目中也有用到过nhibernate但对nhibernate的认识,也存留在会用的阶段,从没深入的学习过,决定对nhibernate做一个系统的学习. ORM 对象-关系映射(OBJECT/RELATION MAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统.对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据