什么是 NHibernate?

Posted

技术标签:

【中文标题】什么是 NHibernate?【英文标题】:What is NHibernate? 【发布时间】:2009-06-06 08:35:43 【问题描述】:

作为我previous question 的后续行动。我是一名 ASP.NET 程序员,我想知道 NHibernate 将如何帮助我比其他方式更轻松、更快速地完成工作。假装我对NHibernate一无所知。它是什么,它能为我做什么?

【问题讨论】:

【参考方案1】:

NHibernate 是一个 ORM 或对象关系映射器。与 LINQ to SQL、Entity Framework、LLBLGen 等类似,ORM 工具消除了编写存储过程来处理业务对象的通用数据访问 (CRUD) 的大部分需求。 ORM 工具要求您创建(手动或使用可视化设计器...取决于您选择的)一个映射规范,该规范跟踪对象的哪些属性映射到数据库中表和/或视图的哪些列。当您需要检索对象时,ORM 工具会为您生成适当的 SQL,并将其发送到数据库。当需要更新您的对象时,ORM 不仅会创建 SQL 来为您插入、更新和删除……它还会批处理这些命令,以便将单个连接和一批命令发送到数据库并在事务中执行整个事情。 ORM 工具还可以让您一次选择整个对象图,从而为任务生成最高效的 SQL,从而提高查询效率。

使用 ORM 工具,您仍然需要查询,但是您可以使用 ORM 上下文或会话对象的基本方法,或者使用该 ORM 的自定义查询语言。如今,包括 NHibernate 在内的大多数 ORM 还提供 LINQ 支持,允许您使用标准 LINQ 语法来查询您的对象模型,然后将其转换为针对您的数据库的 SQL 查询。

OR 映射器的好处是您可以将几乎所有代码集中到您的域中,而不是在域和存储过程之间拆分它。您减轻了数据库上的存储过程负载,减少了在需要时重构数据库的障碍,不仅在您的域中,而且在您的数据库模式中提供了更大的业务敏捷性。由于您不必编写 SQL,特别是如果您使用 LINQ,您通常可以以更少的工作量创建更高效​​的应用程序,同时降低长期维护成本。

除了与您的 DBA(如果有的话)不可避免的战争之外,OR 映射器可以为表带来可观的好处,可以减少实施工作、提高可维护性并提供更大的业务敏捷性。

希望能回答这个问题。 ;)

【讨论】:

【参考方案2】:

一个很好的介绍和教程可以在这里找到Summer of NHibernate Screencasts。

在每个视频中,他都会介绍 nHibernate 中的一个主题,然后深入研究一些代码,同时解释如何做不同的事情。我发现它很有帮助。

【讨论】:

【参考方案3】:

nhibernate 是一个 ORM 工具

dimecasts 有一些 videos 可以帮助您入门

您可以找到更多信息here

还有更多关于谷歌的信息:)

【讨论】:

您的第二个链接不可见。你能重新发布吗【参考方案4】:

NHibernate 是一个 ORM(对象关系映射器)工具。它会根据您的数据库模式创建一个面向对象的模型。

来自https://www.hibernate.org/343.html

NHibernate 主要特点:

自然编程模型 - NHibernate 支持自然 OO 习语;继承、多态、组合和 .NET 集合框架,包括泛型集合。

Native .NET - NHibernate API 使用 .NET 约定和习惯用法

支持细粒度对象模型 - 为集合和依赖对象提供丰富多样的映射

没有构建时字节码增强 - 在您的构建过程中没有额外的代码生成或字节码处理步骤

查询选项 - NHibernate 解决了问题的两个方面;不仅是如何将对象放入数据库,还包括如何再次将它们取出

自定义 SQL - 指定 NHibernate 应该用来持久化对象的确切 SQL。 Microsoft SQL Server 支持存储过程。

支持“对话” - NHibernate 支持长寿命的持久性上下文、对象的分离/重新附加,并自动处理乐观锁定

免费/开源 - NHibernate 在 LGPL(较小的 GNU 公共许可证)下获得许可

【讨论】:

以上是关于什么是 NHibernate?的主要内容,如果未能解决你的问题,请参考以下文章

Nhibernate学习教程-- 开篇有益

Nhibernate 与其他 ORM 的区别是啥?

在NHibernate查询中实现条件的更好方法是什么?

llblgen 和 nHibernate 有啥区别?

NHibernate概括

将 NHibernate 从 1.2 升级到 3.2 时需要注意啥?