NHibernate是什么?

45

作为我的上一个问题的后续。我是一名ASP.NET程序员,想知道NHibernate如何帮助我更轻松、更快速地完成工作。假设我对NHibernate一无所知。它是什么,它能为我做什么?

NHibernate是一个开源的对象关系映射(ORM)框架,可以将.NET对象映射到关系型数据库中的表和字段。使用NHibernate,您可以直接操作.NET对象而不需要编写任何SQL语句。这使得与数据库交互变得更加简单和快捷。此外,NHibernate还提供了高级功能,例如缓存、延迟加载和查询优化,以进一步提高性能。


这里可以找到一个很好的介绍和教程:Summer of NHibernate Screencasts。在每个视频中,他会先介绍nHibernate的一个主题,然后通过解释如何完成不同的任务来深入讲解代码。我发现这非常有帮助。 - undefined
4个回答

87
NHibernate是一个ORM,即对象关系映射器。与LINQ to SQL、Entity Framework、LLBLGen等工具相同,ORM工具消除了编写存储过程来处理业务对象的常见数据访问(CRUD)的大部分需求。ORM工具要求您创建映射规范(手动或使用可视化设计工具),跟踪您的对象的哪些属性映射到数据库中表和/或视图的哪些列。当您需要检索对象时,ORM工具将为您生成适当的SQL,并将其发送到数据库。当更新对象的时间到来时,ORM不仅会为您创建插入、更新和删除的SQL...它还会批量处理这些命令,以便在事务中发送单个连接和命令批并执行整个过程。ORM工具还可以通过允许您一次选择整个对象图来提高查询效率,并为该任务生成最有效的SQL。
使用ORM工具,您仍然需要进行查询,但是可以使用ORM的上下文或会话对象上的基本方法,或者使用ORM的自定义查询语言进行查询。现在,大多数ORM(包括NHibernate)也提供LINQ支持,允许您使用标准的LINQ语法来查询对象模型,从而将其转换为针对数据库的SQL查询。
ORM映射器的好处是,您将几乎所有代码集中到域中,而不是分散在域和存储过程之间。您减轻了数据库上存储过程的负担,如果需要,提供了更大的业务敏捷性,不仅适用于您的域,而且适用于您的数据库模式。由于您不必编写SQL,尤其是如果使用LINQ,您可以以较少的工作量创建更高效的应用程序,降低长期维护成本。
除与数据库管理员(如果有)的无法避免的战争外,ORM映射器可以为您带来可观的好处,这些好处可以降低实现难度、改善可维护性,并提供更大的业务敏捷性。希望这回答了问题。;)

所以工作流程大致如下:C#对象 → ORM(EF,NHibernate等)→ LINQ → SQL到数据库 - carloswm85

7

这里可以找到一份很好的介绍和教程:Summer of NHibernate Screencasts

在每个视频中,他会先介绍nHibernate中的一个主题,然后深入讲解代码并解释如何实现不同的功能。我发现这非常有帮助。


4

nhibernate是一种ORM工具

dimecasts有一些视频可以帮助你开始使用nhibernate

你可以在这里找到更多信息

甚至在Google上也可以查找到更多信息 :)


你的第二个链接不可见。能否请重新发布? - Meetu Choudhary

0

NHibernate 是一个 ORM(对象关系映射)工具。它基于你的数据库架构创建面向对象的模型。

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

NHibernate的主要特点:
- 自然的编程模型 - NHibernate支持自然的面向对象编程范式;继承、多态、组合和.NET集合框架,包括泛型集合。 - 原生的.NET - NHibernate API使用.NET惯例和习惯用法。 - 支持细粒度的对象模型 - 为集合和依赖对象提供丰富的映射。 - 无需构建时字节码增强 - 在构建过程中不需要额外的代码生成或字节码处理步骤。 - 查询选项 - NHibernate解决了问题的两个方面;不仅是如何将对象存储到数据库中,还包括如何再次获取它们。 - 自定义SQL - 指定NHibernate应该使用哪些确切的SQL来持久化您的对象。Microsoft SQL Server支持存储过程。 - 支持“会话” - NHibernate支持长时间持久化上下文、对象的分离/重新连接,并自动处理乐观锁定。 - 免费/开源 - NHibernate根据LGPL(Lesser GNU Public License)许可证发布。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接