NHibernate - 架构
如今,许多系统都采用分层架构设计,NHibernate 也采用这种架构,并且与该设计完美配合。
分层架构
分层架构将系统划分为多个组,每个组包含针对特定问题领域的代码,这些组称为层。大多数企业级应用程序使用由三层组成的高级应用程序架构 −
- 表示层
- 业务层
- 持久层

例如,用户界面层(也称为表示层)可能包含用于构建网页和处理用户输入的所有应用程序代码。
分层方法的一个主要优点是,您通常可以对一个层进行更改而不会对其他层造成任何重大干扰,从而使系统更不易损坏且更易于维护。
表示层
它是最顶层,包含负责绘制用户界面、页面的代码,对话框或屏幕,收集用户输入并控制导航。
业务层
业务层负责实现用户作为问题域的一部分会理解的任何业务规则或系统要求。
它还重用了持久层定义的模型。
持久层
持久层由负责保存和检索应用程序数据的类和组件组成。
此层还定义了模型类和数据库之间的映射。 NHibernate 主要用于此层。
数据库
- 数据库存在于 .NET 应用程序之外。
- 它是系统状态的实际、持久表示。
- 如果使用 SQL 数据库,则数据库包括关系模式和可能的存储过程。
帮助程序/实用程序类
每个应用程序都有一组支持其他层的帮助程序或实用程序类:例如,UI 小部件、消息传递类、异常类和日志记录实用程序。
这些元素不被视为层,因为它们不遵守分层架构中层间依赖关系的规则。
NHibernate 架构
它是 NHibernate 应用程序的高级视图,您还可以看到简单的 NHibernate 架构。

应用程序代码使用 NHibernate ISession 和 IQuery API 进行持久性操作,并且只需管理数据库事务,理想情况下使用 NHibernate ITransaction API。