原文链接 :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通信。

最新文章

  1. css框架
  2. Springboot数据库连接池报错的解决办法
  3. 1005. Spell It Right (20)
  4. principal-component-analysis
  5. Leetcode: Minimum Genetic Mutation
  6. Eclipse+Selenium自动化测试脚本设计V1.0
  7. codeforces B. Routine Problem 解题报告
  8. Ajax随笔
  9. Codeforces Educational Codeforces Round 5 A. Comparing Two Long Integers 高精度比大小,模拟
  10. (转)DevExpress GridView属性设置
  11. java.util.Map.Entry接口
  12. Android SQLite的使用2(非原创)
  13. [转]UIWebView的Javascript运行时对象
  14. 【samba】samba 用户权限配置(转)
  15. Codeforces Round #467 (div.2)
  16. Spring Resource接口获取资源
  17. Linux查看本机IP:curl cip.cc
  18. histogram 和 bar plot的区别
  19. 牛客网 PAT 算法历年真题 1001 : A+B和C (15)
  20. python 函数学习

热门文章

  1. bootstrapValidator 重置表单
  2. vue中background-image图片路径问题
  3. Miner3D Enterprise 企业版
  4. thinkphp 3.2.3版本学习笔记
  5. Python常见编程规范总结
  6. warning: remote HEAD refers to nonexistent ref, unable to checkout.解决
  7. JS事件阻止冒泡的写法
  8. Android(java)学习笔记86:Android提供打开各种文件的API接口:setDataAndType
  9. NOIP2018初赛 解题报告
  10. GPU并行编程:内核及函数的实现