原文链接 :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. javascript之 JavaScript 工具库

    javascript之 JavaScript 工具库jQuery 目录: 一.查找标签和事件绑定以及操作标签的对比 二.DOM对象和jquery的转换 三.$(document).ready( )  ...

  2. java基础概念整理综合 及补充(jdk1.8)

    2018 java基础 笔记回顾摘要 一 1,html 与 注释: <!--   -->  注释不能嵌套 代码都得有注释. 2,空格符:   3,css选择的优先级: id选择器 > ...

  3. C++编写字符串类CNString,该类有默认构造函数、类的拷贝函数、类的析构函数及运算符重载

    编码实现字符串类CNString,该类有默认构造函数.类的拷贝函数.类的析构函数及运算符重载,需实现以下“=”运算符.“+”运算.“[]”运算符.“<”运算符及“>”运算符及“==”运算符 ...

  4. javascript字符串格式化string.format

    String.prototype.format = function () { var values = arguments; return this.replace(/\{(\d+)\}/g, fu ...

  5. mybat-大文件的存取

    在mybatis中存储大文件可以直接存 取的时候取出来的是二进制 1.在实体类中添加大文本和图片 package com.java1234.model; public class Student { ...

  6. 爬虫爬取代理IP池及代理IP的验证

    最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...

  7. 【BZOJ2427】[HAOI2010] 软件安装(缩点+树形DP)

    点此看题面 大致题意: 有\(N\)个软件,每个软件有至多一个依赖以及一个所占空间大小\(W_i\),只有当一个软件的直接依赖和所有的间接依赖都安装了,它才能正常工作并造成\(V_i\)的价值.求在容 ...

  8. 【Python全栈-CSS】background背景

    background背景 一.背景图片 background-image: url("img/num.png"); background-position-x: -200px ; ...

  9. android设备局域网中快速搜索之cling方式

    cling方式就像pc端windows局域网工作组刷新显示一样,原来用过扫描ip地址的方式,可以使用就是有点慢,还有一种自己加入组广播,通过发送组广播的方式.   android设备局域网中快速搜索之 ...

  10. shell脚本,awk结合正则来打印文件里面的内容。

    文件内容如下:key1abc d key2 1.想得到如下结果: abc d 2.想得到如下结果: key1key2