NHibernate 架构浅析

先看一张非常高层次的、抽象的 NHibernate 架构视图。从这张图可以看出, NHibernate 使用数据库和配置数据为应用程序提供持久化服务(以及持久化对象)。

NHibernate 高级架构视图

我们可能更希望看到它的更加详细的运行时架构,然而由于 NHibernate 是很灵活的,它支持不同的用法,所以这个运行时架构视图也有不同的版本,下面展示两个极端的 NHibernate 运行时架构。

轻量级的架构可以让应用程序提供自己的 ADO.NET 连接并管理事务, 这种用法仅使用了 NHibernate API 的最小子集,如下图所示。

"Lite" Architecture of NHibernate

全功能架构使应用程序与底层的 ADO.NET API 抽象隔离, 而让 NHibernate 关注具体实现。

 Full cream Architecture of NHIbernate

该架构视图中几个对象的定义:

  • ISessionFactory  (NHibernate.ISessionFactory) 
    经过编译的单个数据库的映射的缓存, 是线程安全的且不可变的, 是 ISession 的工厂,  IConnectionProvider 的客户端, 可能保存用于跨事务的二级缓存数据, 是进程级别或者群集级别的对象。
  • ISession (NHibernate.ISession) 
    单线程,生命周期短的对象,表示应用程序和持久化存储之间的一个对话, 封装一个 ADO.NET 连接。 它是 ITransaction 的工厂,保存持久化对象的一级缓存, 在对象图中导航或者按照标识查找对象时使用。
  • Persistent Objects and Collections 
    持久化对象与集合,包含持久化状态和业务功能的单线程、短周期对象, 通常可以是一般对象 (POCO), 唯一的特殊性是与一个且只有一个 ISession 相关联, 一旦 Session 被关闭, 他们将会与 Session 分离, 从而可以在应用程序任意层使用(例如直接被用作进出表示层的数据传输对象)。
  • Transient Objects and Collections 
    没有与 ISession 关联的持久化类的实例。他们可能由应用程序初始化且不做持久化,也可能是被一个已经关闭的 ISession 初始化。
  • ITransaction (NHibernate.ITransAction) 
    抽象事务,一个单线程的短周期对象,被应用程序用来表示原子单位的工作, 使应用程序和底层的 ADO.NET 事务相隔离,在某些情况下,一个 ISession 需要跨越多个事务。(这是一个可选对象)
  • IConnectionProvider (NHibernate.Connection.IConnectionProvider) 
    ADO.NET 连接和命令的工厂, 将应用程序与特定数据库实现的 IDbConnection 和 IDbCommand , 不向应用程序暴露,但是可以被开发人员扩展或实现。(这是一个可选对象)
  • IDriver (NHibernate.Driver.IDriver) 
    封装不同的 ADO.NET 之间的差异的接口, 比如参数命名转换、受支持的 ADO.NET 特性等。(这是一个可选对象)
  • ITransactionFactory (NHibernate.Transaction.ITransactionFactory) 
    ITransaction 的工厂, 不向应用程序暴露,但是可以被开发人员扩展或实现。(这是一个可选对象)

在轻量级架构中,应用程序绕开 ITransaction/ITransactionFactory 和 /IConnectionProvider ,直接使用 ADO.Net 事务。

张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。

本博客已经迁移到 GitHub , 围观地址: http://beginor.github.io/

本文转自张志敏博客园博客,原文链接:http://www.cnblogs.com/beginor/archive/2011/02/11/1951400.html ,如需转载请自行联系原作者
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/380235

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。