惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - 刀魂

CSS 行级元素和块级元素区别 ‘vue‘ 不是内部或外部命令,也不是可运行的程序或批处理文件 VS2003"无法启动调试 没有正确安装调试器"的解决办法 Javascript Array和String的互转换。 Assembly.Load 失败。 setInterval 启用和停止,见代码 运行DB2Cmd打不开,找不到文件,Quest for db2 打开报错。unable Javascript中的setTimeout和setInterval函数区别 关于Jquery中ajax方法data参数用法的总结 vs2005新建项目中没有ASP.NET WEB应用程序的解决方法 - 刀魂 卸载sql 2005后,打开sql 2000企业管理器 提示sql mmc无法创建管理单元 VS2003:--------关于"您试图打开的项目是WEB项目,需要通过指定其"Url"路径来打开 - 刀魂 Jquery知识小点: - 刀魂 ASP.NET 运行设置了断点,但是怎么也无法进去。 工具VS2003. - 刀魂 在ASP.NET MVC中使用DropDownList引用。呵呵。 sql2005:sa用户无法登陆。 - 刀魂 orcl基础小知识。 - 刀魂 javascript知识补充学习 - 刀魂 多线程与Invoke,Beginvoke - 刀魂
NHibernate VS IbatisNet
刀魂 · 2013-05-21 · via 博客园 - 刀魂

NHibernate 是当前最流行的Java O/R mapping 框架Hibernate 的移植版本,当前版本是1.0 rc-1 。它出身于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 . 以数据库字段一一对应映射得到的PO 和NHibernte 这种对象化映射得到的PO 是截然不同的,本质区别在于这种PO 是扁平化的,不像NHibernate 映射的PO 是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。 7 . 最关键的一句话是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。

posted on 2013-05-21 09:21  刀魂  阅读(217)  评论()    收藏  举报