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
各位国庆开心快乐!
NHibernate VS IbatisNet的更多相关文章
- NHibernate与IbatisNet的简单比较
NHibernate是当前最流行的Java O/R mapping框架Hibernate的移植版本,当前版本是1.0 rc-1.它出身于sf.net..IbatisNet是另外一种优秀的Java O/ ...
- 我大中华微软MVP中国区人才库
刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的Asp.net从业经验,微软MSDN特约讲师.Teched讲师.ImagineCup大赛评委.人大出版社研修班特约讲师,曾多次受邀访问美 ...
- 我大中华微软MVP中国区人才库(转)
出处:http://www.genshuixue.com/i-cxy/p/15349735 刘海峰:国内知名微软开源技术网站51Aspx 创始人,十年以上的asp.net从业经验,微软MSDN特约讲师 ...
- DotNet软件开发框架
这是我4月份发在donews博客上的文章,现在都转到博客园来,风满袖希望进一步阐述你的架构,我就将这篇文章转移到博客园.原文:http://blog.donews.com/shanyou/archiv ...
- 奖项-MVP:MVP(微软最有价值专家)百科
ylbtech-奖项-MVP:MVP(微软最有价值专家)百科 微软最有价值专家(MVP) 是指具备一种或多种微软技术专业知识,并且积极参与在线或离线的社群活动,经常与其他专业人士分享知识和专业技能,受 ...
- IBatisNet使用教程
1.是数据持久层,对应.NET方向的有Ibatis.NET,只要用来处理数据库表结构和程序实体之间映射,ado.net是用来处理和数据库直接通信的,取出数据(object,int,string,da ...
- IBatisNet基础组件
DomSqlMapBuilder DomSqlMapBuilder,其作用是根据配置文件创建SqlMap实例.可以通过这个组件从Stream, Uri, FileInfo, or XmlDocumen ...
- IbatisNet开发使用小结
一. 介绍 平常做企业级应用,需求变化是经常的事,而很多基础代码重复也是很让人头疼的问题.所以很多人会使用一些ORM框架来增强项目的可维护性.可扩展性.IBatis.Net就是一个比较易用的ORM ...
- 再论IBatisNet + Castle进行项目的开发
随着项目的进展,Castle和IBatisNet给我的惊喜更多.Com+很重,不需要分布式的中小项目慎用,NHibernate虽好,NHibernate的2005-9-20发布了最新版本1.0-rc1 ...
随机推荐
- JavaScript | 数据属性与访问器属性
属性类型 数据属性 - 包含一个数据值的位置,可以读取和写入值 [writable] 是否能修改属性的值 true [enumerable] 是否通过for in 循环返回属性(是否可以被枚举) tr ...
- Drupal的钩子系统
Drupal的很多功能都是可以定制的.以导航菜单为例,blog模块需要在菜单上添加一些功能,comment模块需要在菜单上添加一些功能,我们开发的自定义模块也需要在菜单上添加一些功能.Drupal开发 ...
- c++继承总结
继承 1)继承是面向对象程序设计实现软件重用的重要方法.程序猿能够在已有基类的基础上定义新的派生类. 2) 单继承的派生类仅仅有一个基类.多继承的派生类有多个基类. 3) 派生类对基类成员的訪问由继承 ...
- java基础讲解04-----数据类型和运算符
1.java的基本数据类型 1.数值型 { 整数型 byte , short ,int ,long 浮点型 float , double } 2.字符型 3.布尔型 2.运算符 1.赋 ...
- WebApi接口传参不再困惑(4):传参详解
前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...
- SSDB(网络LevelDB)-- 实际遇到的问题
简介 SSDB -- 支持网络的LevelDB 站点:https://github.com/ideawu/ssdb 我实际使用了SSDB支持网络+持久化特性,完成了一个集群 1.句柄数 ulimit ...
- javascript 反调试 监听用户打开了Chrome devtool
let div = document.createElement('div'); let loop = setInterval(() => { console.log(div); ...
- Laravel自定义分页样式
<?php namespace App\Http\Controllers; use DB; use App\Http\Controllers\Controller; class UserCont ...
- jcifs 具体解释读取网络共享文件数据
时隔1年半,没有发过新的帖子了,也没怎么来过CSDN逛逛了,人也懒散了. 今天收到网友的提问,才回来看看.认为应该再写点什么出来.只是.发现自己研究是不是太深入,写不出那么高深的东西.那就写点肤浅的东 ...
- PHP学习笔记(13)班级和学生管理---班级
两个文件夹,一个班级cls,一个学生stu. 两个表,一个班级cls,一个学生stu. 每个文件夹里有7个php文件:主界面cls.php-------增add.php,insert.php----- ...