NHibernate的优点和缺点是什么?

时间:2009-11-11 13:33:15

标签: nhibernate

对于一个新项目,我们正在研究NHibernate。我们总体上非常喜欢它,但有一件事困扰着我们:它似乎非常耗费资源。显然,即使您只需要其中一个属性,NHibernate也会加载对象的所有属性。此外,它将对子对象的属性执行相同的操作。

所以我们正在权衡NHibernate的优点和缺点。你会说他们是什么,如果上涨弥补了不利因素呢?

3 个答案:

答案 0 :(得分:2)

优点:

  1. 二级缓存
  2. 本地创建表示数据的对象
  3. 创建SQL查询并避免SQL注入
  4. 延迟加载
  5. 以下外键更容易。
  6. DB翻译(改变方言)
  7. 该框架得到了很好的支持,并且是开源的
  8. 有许多工具可以使用并生成Hibernate的代码/映射文件
  9. 缺点:

    1. 可能比直接查询慢
    2. 对象初始化比手动
    3. 初始配置很痛苦
    4. 在运行时检查映射,这可能很难设置
    5. 这取决于你在做什么。 Hibernate不是批量更新的工具。

答案 1 :(得分:2)

<强>缺点:

  1. 编辑HBM文件可能需要一段时间(尽管你可以使用Castle的ActiveRecord,它进行会话管理,让你声明与属性的关系,它用来生成HBM,因为NH在AR下面。注意:您不必将AR模式与Castle的AR一起使用。
  2. 它可能会运行更多查询来检索特定的数据图形,而不是手动编写它时
  3. 利用数据库引擎的功能更加困难,因为NH对待就像一个愚蠢的唱片店
  4. Oracle支持不如其他方言。
  5. <强>优点

    1. 您可以使用Linq-to-NH,并对所有支持的方言使用linq样式查询。
    2. 您可以使用HQL而不是SQL
    3. 您可以在配置文件中使用几行来切换DB供应商
    4. 有一些工具可以为您生成架构。
    5. 支持版本化实例

答案 2 :(得分:2)

以下是一些尚未提及的内容(抱歉,它不是pro / con格式)。这些适用于您将创建一个通用框架来执行基本实体操作的情况(因此您有一个可重用的NHibernate库,可用于其他项目)。

  • 设置它是一个真正的痛苦。我们现在很稳定,但我们开始开发它
  • 考虑您将要开发的应用程序类型(即Web表单或WinForms),因为您在通用框架中使用的会话模型可能不同;或者,您可能希望开发一个框架,您希望能够插入自己的会话管理实现。这里有很多选择。
  • 如果有可能使用框架开发高度并发的应用程序,那么从一开始就设计并发模型 - 以后可能很难让它正常工作。
  • 如果使用NHibernate.Mapping.Attributes库,则无需处理外部XML映射文件。您所要做的就是向数据对象类添加元数据。这非常方便,直观且易于维护。

这就是我现在所拥有的一切。如果我想到其他任何事情,我会添加到我的列表中。