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

各位国庆开心快乐!

NHibernate VS IbatisNet的更多相关文章

  1. NHibernate与IbatisNet的简单比较

    NHibernate是当前最流行的Java O/R mapping框架Hibernate的移植版本,当前版本是1.0 rc-1.它出身于sf.net..IbatisNet是另外一种优秀的Java O/ ...

  2. 我大中华微软MVP中国区人才库

    刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...

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

    出处:http://www.genshuixue.com/i-cxy/p/15349735 刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的asp.net从业经验,微软MSDN特约讲师 ...

  4. DotNet软件开发框架

    这是我4月份发在donews博客上的文章,现在都转到博客园来,风满袖希望进一步阐述你的架构,我就将这篇文章转移到博客园.原文:http://blog.donews.com/shanyou/archiv ...

  5. 奖项-MVP:MVP(微软最有价值专家)百科

    ylbtech-奖项-MVP:MVP(微软最有价值专家)百科 微软最有价值专家(MVP) 是指具备一种或多种微软技术专业知识,并且积极参与在线或离线的社群活动,经常与其他专业人士分享知识和专业技能,受 ...

  6. IBatisNet使用教程

     1.是数据持久层,对应.NET方向的有Ibatis.NET,只要用来处理数据库表结构和程序实体之间映射,ado.net是用来处理和数据库直接通信的,取出数据(object,int,string,da ...

  7. IBatisNet基础组件

    DomSqlMapBuilder DomSqlMapBuilder,其作用是根据配置文件创建SqlMap实例.可以通过这个组件从Stream, Uri, FileInfo, or XmlDocumen ...

  8. IbatisNet开发使用小结

    一.   介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...

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

    随着项目的进展,Castle和IBatisNet给我的惊喜更多.Com+很重,不需要分布式的中小项目慎用,NHibernate虽好,NHibernate的2005-9-20发布了最新版本1.0-rc1 ...

随机推荐

  1. maven编译war包,pom中必须有的几个dependency

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> ...

  2. unity3d的NGUI简易登录界面

    1.拖两个文本框和一个按钮在界面上,并做相应的重命名处理,结果如下图: 2.新建一个脚本,附加到“Login”上,脚本内容如下: public UIInput name; public UIInput ...

  3. swift2.0中文版教程

    有些同学问我要swift的中文版教程,为了节省大家的找资料的时间,我就把我网上下载的PDF放到这里共享好了. 点击链接或者右击选择下载文件进行下载:swift2.0中文版教程 在此也感谢翻译者们的贡献 ...

  4. oracle 某一字段取反

    --某一位取反select id ,flag,(flag + 1) - BITAND(flag, 1) * 2 from SYS_INFO t UPDATE SYS__INFO SET FLAG=(( ...

  5. simpleRNN

    simpleRNN 训练集为<爱丽丝梦境>英文版txt文档,目标:根据随机给出的10个字符,生成可能的后100个字符 词向量空间生产 In [4]: INPUT_FILE = " ...

  6. Oracle 动态sql 实现方式

    /******************************************************************* Sample Program 10: Dynamic SQL ...

  7. 远程调试 Weinre

    什么是远程调试? 说白了,就是可以通过PC端[F12开发者工具]查看并调试移动端的页面内容,如html.css.js.Network资源等. 重要的事情说三遍:weinre所占有的端口不需要和监听页面 ...

  8. phpexcel对于中文路径和中文名称的问题(有疑问)

    phpexcel对于中文的文件名无法读取(我本地环境都是utf-8的编码) 是不是win系统识别都是gbk ?(需要把utf-8的字符串改为gbk) $file = "C:\\Users\\ ...

  9. unity, 在surface shader中访问顶点色

    //ref: Custom data computed per-vertex: http://docs.unity3d.com/Manual/SL-SurfaceShaderExamples.html ...

  10. error while loading shared libraries错误解决

    在编译引用了第三方库的代码后,执行出现了以下错误 [work@xxx zktest]$ ./a.out ./a.out: error while loading shared libraries: l ...