首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate和iBATIS.NET有什么区别?

NHibernate和iBATIS.NET有什么区别?
EN

Stack Overflow用户
提问于 2009-03-29 12:16:45
回答 3查看 2.7K关注 0票数 5

我正在寻找一些比较NHibernate和iBATIS.NET的最新信息。我发现了一些搜索谷歌的信息,但是其中的一些信息要么适用于这些产品的Java版本,要么就过时了。

我感兴趣的一些具体事情:

  • 如果同时控制数据模型和应用程序,哪个更好?
  • iBATIS被反复称为简单易学--这是否会带来长期的维护后果(即容易启动,很难维护)?
  • 两者都能使切换底层数据库供应商变得容易吗?
  • 您的开发人员需要如何熟练地使用SQL?
  • 一个人有什么重要的特点,而另一个人没有?
  • 这两种产品是否更适合特定类型的应用?

真实世界中观察到的好处和缺点的例子是值得赞赏的!

编辑:谢谢你的信息。我也在做我自己的评估。我想知道的是,iBATIS是否可以帮助您保存/更新复杂的对象图?NHibernate似乎不错,因为我可以将它作为根对象传递给它,它可以计算出哪些细节需要在数据库中更新。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-03-29 16:08:47

不久前我做了一些研究。

我的一个具体问题,可能会给你一些额外的信息:您是否会将NHibernate用于具有部分超出您控制范围的遗留数据库的项目?

我可以回答你的一些兴趣点:

  • 如果同时控制数据模型和应用程序,哪个更好?

相反,我可以这样回答:如果您无法控制数据模型,从而面临一些遗留数据库,那么iBatis是更好的选择。

  • iBATIS被反复称为简单易学--这是否会带来长期的维护后果(即容易启动,很难维护)?

这取决于你想用它做什么。如果您有域驱动的开发方法,那么iBatis可能会随着时间的推移而变得痛苦。如果您只是做简单的数据操作,并且没有一个完整的域模型,那么nHibernate可能是一个过度的时代。

  • 两者都能使切换底层数据库供应商变得容易吗?

这两家公司都有保护您免受特定数据库供应商攻击的机制,但我承认,在这方面还没有进行过深入的研究。

  • 您的开发人员需要如何熟练地使用SQL?

当您使用iBatis时,您需要比NHibernate更多的SQL技能。使用iBatis,您总是需要编写一些SQL代码。NHibernate不要求您编写SQL语句--它甚至可以为您编写DDL。强大的特性将要求您使用旧的好SQL,这是不可避免的。

其他几点:

  • 我个人认为iBatis要轻得多。你可以很快把事情做完。NHibernate功能更强大,但是有更多的特性,您可能会错误地使用这些特性。
  • 可以将NHibernate和iBatis的使用结合起来!您可以将NHibernate用于业务逻辑。出于报告目的,您只需从表中读取数据,就回退到iBatis。
  • 如果您的应用程序具有更长的生命周期和大量的业务逻辑,请考虑NHibernate。它有许多帮助您处理业务对象的特性。
  • NHibernate周围的社区非常活跃,并提供了有用的工具。
票数 5
EN

Stack Overflow用户

发布于 2009-03-29 15:28:45

从某种意义上说,这是把苹果比作橘子。

如果同时控制数据模型和应用程序,哪个更好?

它们都能很好地处理规范化数据库,因此,如果可以对数据库进行格式化,它们或多或少是相等的。iBatis更擅长映射到遗留数据库,因为它实际上根本不关心数据库结构。它只关心结果集的形状。

.iBATIS被反复称为简单易学--这是否会带来长期的维护后果(即容易启动,很难维护)?

它要简单得多,但这是因为它有一个小得多的功能复位。我不认为它有任何定时炸弹长期维护的问题。

两者都能使切换底层数据库供应商变得容易吗?

您的开发人员需要如何熟练地使用SQL?

两者都需要对SQL有很好的了解。使用iBatis,您仍然必须编写sql查询/proc。使用NHibernate,您必须知道如何编写NHibernate查询才能获得有效的SQL。两者都不是SQL知识的替代品。

一个人有什么重要的特点,而另一个人没有?

iBatis是datamapper ( iBatis站点上使用的术语)。NHibernate是一个成熟的对象关系映射程序.如果您主要希望将映射对象中的单调内容去掉到结果集中,那么iBatis是一个很好的方法。但是,在试图解决对象/关系不匹配时,它并不是一帆风顺的。NHibernate具有脏跟踪、基于身份/identity映射的缓存、灵活查询、动态sql、批处理等功能。NHibernate更具有动态性,因为它可以在一次访问DB时做许多事情,这可能需要iBatis多次访问。

票数 3
EN

Stack Overflow用户

发布于 2009-05-08 18:47:50

我们最近发表了一篇比较这两种工具的文章,我认为您的许多问题都得到了解决。这篇文章是关于我们的维基站点的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/694552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档