什么是NHibernate?

作为我之前的问题的后续。 我是一名ASP.NET程序员,想知道NHibernate如何帮助我更容易,更快速地完成工作。 假装我对NHibernate一无所知。 这是什么,它可以为我做什么?

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

使用ORM工具,您仍然需要查询,但是您可以使用ORM的上下文或会话对象上的基本方法,也可以使用该ORM的自定义查询语言进行查询。 现在,包括NHibernate在内的大多数ORM都提供了LINQ支持,允许你使用标准的LINQ语法来查询你的对象模型,而这个对象模型反过来被转换为你的数据库的SQL查询。

或映射器的好处是,你几乎所有的代码集中到你的域,而不是分裂它之间的域和存储过程。 您可以减轻数据库上的存储过程负载,如果需要重构数据库,则可以减less重构的障碍,不仅可以在您的域中提供更高的业务灵活性,还可以提高数据库架构的业务灵活性。 由于您不必编写SQL,特别是在使用LINQ的情况下,通常可以通过较less的工作量创build一个更高效的应用程序,并降低长期维护成本。

除了与DBA之间不可避免的战争(如果有的话)之外,OR映射器还可以为表格带来相当大的好处,可以减less实施工作,提高可维护性并提供更高的业务灵活性。

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

一个很好的介绍和教程可以在这里findNHibernate Screencast的夏天 。

在每个video中,他都提供了nHibernate中的一个主题的介绍,然后深入解释了一些代码,同时解释了如何做不同的事情。 我发现它非常有帮助。

nhibernate是一个ORM工具

dimecasts有一些video ,可以让你开始

你可以在这里find更多的信息

甚至更多关于谷歌的信息:)

Manning有一本相当不错的书: NHibernate In Action

本书是在NHibernate 1.2版本,但大部分是适用于最新版本。

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

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

NHibernate的关键特性:

  • 自然编程模型 – NHibernate支持自然的OO习惯用法; inheritance,多态,组合和.NET集合框架,包括generics集合。

  • 本机.NET – NHibernate API使用.NET约定和习惯用法

  • 支持细粒度的对象模型 – 丰富的集合和依赖对象的映射

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

  • 查询选项 – NHibernate解决问题的两个方面; 不仅如何将对象放入数据库,还要如何将对象放回到数据库中

  • 自定义SQL – 指定NHibernate应该用来保存对象的确切SQL。 存储过程在Microsoft SQL Server上受支持。

  • 支持“对话” – NHibernate支持长时间的持久性上下文,分离/重新连接对象,自动处理乐观locking

  • 免费/开源 – NHibernate根据LGPL(较低的GNU公共许可证)