我正在寻找一些比较NHibernate和iBATIS.NET的最新信息。我发现了一些搜索谷歌的信息,但是其中的一些信息要么适用于这些产品的Java版本,要么就过时了。
我感兴趣的一些具体事情:
真实世界中观察到的好处和缺点的例子是值得赞赏的!
编辑:谢谢你的信息。我也在做我自己的评估。我想知道的是,iBATIS是否可以帮助您保存/更新复杂的对象图?NHibernate似乎不错,因为我可以将它作为根对象传递给它,它可以计算出哪些细节需要在数据库中更新。
发布于 2009-03-29 16:08:47
不久前我做了一些研究。
我的一个具体问题,可能会给你一些额外的信息:您是否会将NHibernate用于具有部分超出您控制范围的遗留数据库的项目?
我可以回答你的一些兴趣点:
相反,我可以这样回答:如果您无法控制数据模型,从而面临一些遗留数据库,那么iBatis是更好的选择。
这取决于你想用它做什么。如果您有域驱动的开发方法,那么iBatis可能会随着时间的推移而变得痛苦。如果您只是做简单的数据操作,并且没有一个完整的域模型,那么nHibernate可能是一个过度的时代。
这两家公司都有保护您免受特定数据库供应商攻击的机制,但我承认,在这方面还没有进行过深入的研究。
当您使用iBatis时,您需要比NHibernate更多的SQL技能。使用iBatis,您总是需要编写一些SQL代码。NHibernate不要求您编写SQL语句--它甚至可以为您编写DDL。强大的特性将要求您使用旧的好SQL,这是不可避免的。
其他几点:
发布于 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多次访问。
发布于 2009-05-08 18:47:50
我们最近发表了一篇比较这两种工具的文章,我认为您的许多问题都得到了解决。这篇文章是关于我们的维基站点的。
https://stackoverflow.com/questions/694552
复制相似问题