原文链接 :http://nhibernate.info/doc/nh/en/index.html#architecture

体系结构图

高度抽象NHibernate体系架构图

这幅图展示了NHibernate使用数据库和配置数据为应用程序提供了持久化服务和持久化对象。

精简版NHibernate体系架构图

精简版的体系架构图显示了应用程序有自己的 ADO.NET connections对象和管理自己的事务. 这种方式使用 NHibernate's API的一个子集。

完整版NHibernate体系架构图

完整版的体系架构图显示了Nhibernate的应用程序远离底层依赖的 ADO.NET APIs同时让NHibernate负责细节。

体系结构说明

  • 会话工厂ISessionFactory(NHibernate.IsessionFactory):,单个数据库的已编译映射的线程安全(不可变)缓存。 ISession的工厂和IConnectionProvider的客户。可以在进程或集群级别保存可在事务之间重用的可选(二级)数据高速缓存。
  • 会话ISession(NHibernate.ISession):,表示应用程序与持久性存储之间的对话的单线程,短期对象。包装ADO.NET连接。 ITransaction的工厂。保存持久化对象的强制(第一级)缓存,在导航对象图或按标识符查找对象时使用。
  • 持久化对象(Persistent Objects)及其集合(Collections):包含持久化状态和业务功能的短期单线程对象。这些可能是普通的POCO对象,它们的唯一特殊之处在于它们目前与一个(最多一个)ISession对象相关联。只要会话被关闭,它们将被分离并可在任何应用程序层中自由使用(例如,直接作为传送到表现层的数据传输对象(DTO))。
  • 临时对象(Transient Objects)及其集合(Collections):指的是没有和一个ISession关联的持久化类的实例对象。这些实例对象可能是刚刚被程序实例化,还没有来得及被持久化,或者已经持久化但是关联的ISession已经被关闭了。
  • 事务 ITransaction (NHibernate.ITransaction):(可选),应用程序用于指定原子操作的单线程,短期对象。是对来自依赖底层的 ADO.NET transaction 做的抽象. 在某些情况下,一个 ISession 可能跨越几个ITransaction,因此可以使用事务域。
  • 连接提供程序IConnectionProvider(NHibernate.Connection.ConnectionProvider):(可选),ADO.NET连接和命令的工厂。从DbConnection和DbCommand的具体供应商的特定实现中抽象而来。对应用程序不可见,但可以被开发者扩展/实现。
  • 驱动程序接口IDriver (NHibernate.Driver.IDriver):(可选),封装了在ADO.NET 提供程序之间的差异部分的接口。比如参数命名约定和支持ADO.NET特性。
  • 事务工厂ITransactionFactory(net.sf.hibernate.TransactionFactory):(可选),事务实例对象的工厂。对应用程序不可见,但可以被开发者扩展/实现。

在精简架构图中可以看出,应用程序可以绕过ITransaction / ITransactionFactory,然后通过IConnectionProvider API直接与ADO.NET通信。

Nhibernate官方体系结构图部分中文翻译的更多相关文章

  1. Umbraco官方技术文档 中文翻译

    Umbraco 官方技术文档中文翻译 http://blog.csdn.net/u014183619/article/details/51919973 http://www.cnblogs.com/m ...

  2. Go 语言官方包函数中文翻译

    Go官方包函数中文翻译 *** import "strings" func Join(a []string, sep string) string Join concatenate ...

  3. Android Studio 2.0 正式版公布啦 (首次中文翻译)

    Android Studio 2.0 公布了,添加了一些新特性: 1. 更加完好的 Instant Run 2. 更快的 Android Emulator 3.GPU Debugger Preview ...

  4. [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23)

    本文出处  [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23) 这是我的文章备份 http://www.dotblogs.co ...

  5. Python 3.10 版本采纳了首个 PEP,中文翻译即将推出

    现在距离 Python 3.9.0 的最终版本还有 3 个月,官方公布的时间线是: 3.9.0 beta 4: Monday, 2020-06-29 3.9.0 beta 5: Monday, 202 ...

  6. Dapr 官方文档中文翻译 v1.5 版本正式发布

    作者:敖小剑 - Dapr Approver 经过 Dapr 中国社区十余位贡献者一个多月的努力,Dapr 官方文档中文翻译 v1.5 版本完成翻译和审校,正式发布并上线 Dapr 官网. 访问方式 ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 目录篇 -持续更新

    为了方便大家的阅读和学习,也是响应网友的建议,在这里为这个系列做一个目录.在目录开始这前,我先来回答之前遇到的几个问题. 1.为什么要学习EF? 这个问题很简单,项目需要.这不像学校,没人强迫你学习! ...

  8. Unity性能优化(1)-官方教程The Profiler window翻译

    本文是Unity官方教程,性能优化系列的第一篇<The Profiler window>的简单翻译. 相关文章: Unity性能优化(1)-官方教程The Profiler window翻 ...

  9. 关于.NET知识体系结构图总结

    转载:关于.NET知识体系结构图总结-零度http://www.xcode.me/book/net-framework-maps 最近对.NET框架方面的知识进行了概要的总结,整理了一些知识体系结构图 ...

随机推荐

  1. 第6章 传输层(详解TCP的三次握手与四次挥手)

    第6章 传输层 传输层简介 传输层为网络应用程序提供了一个接口,并且能够对网络传输提供了可选的错误检测.流量控制和验证功能.TCP/IP传输层包含很多有用的协议,能够提供数据在网络传输所需的必要寻址信 ...

  2. [转] Adobe acrobat 破解教程

    最新版的Adobe Acrobat DC Pro可以使我们更方便的管理和编辑PDF文档,现在我为大家带来Adobe Acrobat DC Pro安装及破解教程,供大家安装和使用. 工具/原料   Ad ...

  3. django Q条件

    #q条件from django.db.models import Qq = Q(name__startswith="p") | Q(name__startswith="l ...

  4. HDU3973 线段树 + 字符哈希

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3973 , 线段树 + 字符哈希,好题. 又学了一种新的哈希方法,hhhh~ 解法: 想法是用P进制的数 ...

  5. signal函数:void (*signal(int,void(*)(int)))(int);

    http://blog.chinaunix.net/uid-20178794-id-1972862.html signal函数:void (*signal(int,void(*)(int)))(int ...

  6. 2018.5.28 Oracle数据库补充

    select * from (select rownum rn,e2.* from (select e1.* from emp e1)e2 where rownum<=10)e3 where e ...

  7. 小w的糖果

    题目连接 : https://ac.nowcoder.com/acm/contest/923/C 算是一道找规律的题了,因为后一个人会比前一个人多,可以理解成后一个人要继承前一个人,sum为当前糖果数 ...

  8. 前端面试题1:Object.prototype.toString.call() 、instanceof 以及 Array.isArray()三种方法判别数组的优劣和区别

    1. Object.prototype.toString.call() 每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object ...

  9. [未完] term.js 记录遇到的问题

    参考博文:https://www.cnblogs.com/zhenfei-jiang/p/7065038.html 按照网上查找的资料敲了代码 term.on('data', function(dat ...

  10. U盘装系统之winpe中常用安装win7的方法和备份(2013-01-15-bd 写的日志迁移

    首先到网上去下一个制作U盘启动的的软件比如老毛桃.大白菜.电脑城制作u盘启动软件[其实他们的装机界面和工具那些都差不多], 我是用的老毛桃至于制作流程你可以看它的视频你往下拉就可以看见,或者看说明,自 ...