nhibernate - NHibernate 和 iBATIS.NET 有什么区别?

标签 nhibernate orm ibatis.net data-mapping

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

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

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

  • 对观察到的优点和缺点的真实世界示例表示赞赏!

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

    最佳答案

    我前段时间做了一些研究。

    我提出的一个具体问题可能会给你一些额外的信息:
    Would you use NHibernate for a project with a legacy database, which is partly out of your control?

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

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

  • 我可以反过来回答:如果您无法控制数据模型,因此面对一些遗留数据库,iBatis 是更好的选择。
  • iBATIS 一再被称为更容易学习 - 这是否会产生长期维护后果(即易于启动,难以维护)?

  • 这取决于你想用它做什么。如果你有一个领域驱动的开发方法,那么 iBatis 可能会随着时间的推移而变得痛苦。如果您只是进行简单的数据操作并且没有完整的域模型,那么到时 nHibernate 可能是一种矫枉过正。
  • 两者都可以轻松切换底层数据库供应商吗?

  • 两者都有机制来保护您免受特定数据库供应商的影响,但我承认在这个方向上没有进行深入的研究。
  • 您的开发人员需要具备多高的 SQL 技能?

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

    其他几点:
  • 我个人认为 iBatis 更轻量。您可以非常快速地完成工作。 NHibernate 更强大,但具有更多功能,您可能会以错误的方式使用它们。
  • 可以结合使用NHibernate和iBatis!您可以将 NHibernate 用于您的业务逻辑。出于报告目的,您只是从表中读取数据,回退到 iBatis。
  • 如果你的应用生命周期较长,业务逻辑较多,可以考虑使用NHibernate。它有很多功能可以帮助您处理业务对象。
  • 围绕 NHibernate 的社区非常活跃,并提出了有用的工具。
  • 关于nhibernate - NHibernate 和 iBATIS.NET 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/694552/

    相关文章:

    c# - 我应该如何在事务中包装我的选择语句?

    visual-studio-2008 - 尽可能减少配置文件的数量

    java - 如何使用ibatis注释进行批量插入

    sql - 如何使用 NHibernate 处理来自 SQL Server 2008 的 TIME 数据类型?

    c# - 比较 MySQL 日期与 c#/Nhibernate 日期

    sql-server - 如何诊断缓慢的 NHibernate 插入?

    java - 一对多、多对一和多对多之间的区别?

    php - Doctrine - 存储 ArrayCollection 键

    python - 用于非 Django 项目的类 Django 抽象数据库 API

    c# - 此 RPC 请求中提供的参数过多。最大值为 2100。