我正在寻找一些比较 NHibernate 和 iBATIS.NET 的最新信息。我在 Google 上搜索到了一些信息,但其中很大一部分要么适用于这些产品的 Java 版本,要么已经过时了。

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

  • 如果同时控制数据模型和应用程序,哪个更好?
  • iBATIS 被反复称为更容易学习 - 这是否会产生长期维护后果(即,启动容易,维护困难)?
  • 两者都可以轻松切换底层数据库供应商吗?
  • 您的开发人员需要掌握多少 SQL 技能?
  • 有什么主要特征是一个人拥有而另一个人缺乏的吗?
  • 任一产品是否更适合特定类型的应用?

观察到的优点和缺点的真实例子值得赞赏!

编辑:感谢您的信息。我也在做我自己的评价。我仍然想知道一件事,iBATIS 是否可以帮助您保存/更新复杂的对象图?NHibernate 似乎很好,因为我可以向它传递一个根对象,它会计算出数据库中需要更新的内容(如果有的话)的详细信息。

有帮助吗?

解决方案

我不久前做了一些研究。

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

您感兴趣的一些问题我可以回答:

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

我可以反过来回答:如果您无法控制数据模型并因此面对一些遗留数据库,iBatis 是更好的选择。

  • iBATIS 被反复称为更容易学习 - 这是否会产生长期维护后果(即,启动容易,维护困难)?

这取决于您想用它做什么。如果您采用领域驱动的开发方法,那么随着时间的推移,iBatis 可能会变得痛苦。如果您只是进行简单的数据操作并且没有完整的域模型,那么当时 nHibernate 可能就有点大材小用了。

  • 两者都可以轻松切换底层数据库供应商吗?

两者都有机制来保护您免受特定数据库供应商的影响,但我承认还没有在这个方向上进行深入的研究。

  • 您的开发人员需要掌握多少 SQL 技能?

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

其他一些要点:

  • 我个人认为 iBatis 更轻量。你可以很快地完成事情。NHibernate 更强大,但有更多的功能,您可能会以错误的方式使用它们。

  • 可以结合使用 NHibernate 和 iBatis!您可以将 NHibernate 用于您的业务逻辑。出于报告目的,您只需从表中读取数据,则回退到 iBatis。

  • 如果你的应用程序有较长的生命周期和大量的业务逻辑,请考虑NHibernate。它有很多功能可以帮助您处理业务对象。

  • NHibernate 周围的社区非常活跃,并提供了有用的工具。

其他提示

从某种意义上说,这是在将苹果与橙子进行比较。

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

它们都可以很好地处理标准化数据库,因此如果您可以塑造数据库,它们或多或少是相等的。iBatis 更擅长映射到遗留数据库,因为它实际上根本不关心数据库结构。它只关心结果集的形状。

.iBATIS 被反复称为更容易学习 - 这是否会产生长期维护后果(即,更容易学习)启动容易,维护困难)?

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

两者都可以轻松切换底层数据库供应商吗?

是的

您的开发人员需要掌握多少 SQL 技能?

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

有什么主要特征是一个人拥有而另一个人缺乏的吗?

iBatis 是一个数据映射器(iBatis 站点上使用的术语)。NHibernate 是一个成熟的对象关系映射器。如果您主要想要摆脱将对象映射到结果集的单调乏味,那么 iBatis 是一个很好的选择。然而,它并没有完全解决对象/关系不匹配的问题。NHibernate 还有更多功能,例如脏跟踪、基于身份/身份映射的缓存、灵活查询、动态 sql、批处理等......NHibernate 更具动态性,因为它可以在一次数据库访问中完成许多事情,而这些事情可能需要 iBatis 多次访问。

我们最近发布了一篇文章比较这两种工具,我认为您的许多问题都得到了解决。这篇文章在这里 我们的维基网站.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top