NHibernate的优点和缺点是什么?
对于一个新项目,我们正在考虑NHibernate。总体而言,我们非常喜欢它,但有一件事困扰着我们:它似乎非常消耗资源。显然,NHibernate将加载对象的所有属性,即使您只需要其中一个属性。此外,它还将对子对象的属性执行相同的操作 因此,我们正在权衡NHibernate的利弊。你会说它们是什么?如果正面弥补了负面?优势:NHibernate的优点和缺点是什么?,nhibernate,Nhibernate,对于一个新项目,我们正在考虑NHibernate。总体而言,我们非常喜欢它,但有一件事困扰着我们:它似乎非常消耗资源。显然,NHibernate将加载对象的所有属性,即使您只需要其中一个属性。此外,它还将对子对象的属性执行相同的操作 因此,我们正在权衡NHibernate的利弊。你会说它们是什么?如果正面弥补了负面?优势: 二级缓存 创建以本机方式表示数据的对象 创建SQL查询并避免SQL注入 延迟加载 遵循外键更容易 DB翻译(更改方言) 该框架得到了很好的支持,并且是开源的 有很多工具可以为
这取决于你在做什么。Hibernate不是批量更新的工具。缺点:
这里有一些事情还没有提到(对不起,它不是pro/con格式)。这些适用于您将创建一个通用框架来执行基本实体操作的情况(因此您有一个可用于其他项目的可重用NHibernate库)
- 设置它真的很痛苦。我们的现在很稳定,但我们一年前就开始开发了
- 考虑您将要开发的应用程序类型(即web表单或WinForms),因为您在通用框架中使用的会话模型可能不同;或者,您可能希望开发一个框架,以便能够插入自己的会话管理实现。这里有很多选择
- 如果有机会使用该框架开发一个高度并发的应用程序,那么从一开始就设计并发模型——以后很难让它正常工作
- 如果使用
库,则不必处理外部XML映射文件。您所要做的就是向数据对象类添加元数据。这真的很方便,直观,易于维护NHibernate.Mapping.Attributes
这就是我现在所拥有的一切。如果我想到其他任何东西,我会添加到我的列表中。NHibernate由于延迟加载而不会加载整个对象图。话虽如此,NHibernate是发生在我身上的最好的事情之一(编码方面)。它让我不再把数据当作愚蠢的结构,而是让我开始编写“真正的”面向对象设计。谢谢你,肯尼。然而,有人告诉我,Hibernate确实支持延迟加载属性,但不支持.NET版本的NHibernate。我信任谁?:)为什么要关门???我觉得这很有建设性,答案也很好。为什么汤姆,这只被支持了4次。我看到了指向事实的要点清单。但我猜这个问题太开放了,所以哈维先生决定最好主动关闭这个线索“以防万一”