第一章 架构

1.1概述
一个(非常)高层的NHibernate 架构图。

 
这个图显示了NHiberante使用数据库和配置数据来提供在应用程序中的持久化服务(和持久化对象)。
我们跟愿意去展示一个更详细的运行时架构图。不幸的是,NHiberante是弹性的和支持多种方式。我们将显示两个极端。这个“lite”架构图已经有了为应用提供它自己的ADO.NET连接和管理他自己的事务。这个approach使用了NHiberante的API的很小的一个子集。
 

这个完整架构图概述了应用程序院里ADO.NET API并让NHiberante细节处理。
 

这里是一些图中提到的术语的定义。
SessionFactory(NHibernate.ISessionFactory)
对于单一数据库已编译的映射是线程安全的。一个会话工厂,和一个连接器的客户端。可以获得一个随意数据缓存在执行之间被复用,或者在处理时,或集群层次。

Session(NHibernate.ISession)
一个单线程的,段生命周期的对象。代理了应用程序和持久层之间的一个会话。封装了ADO.NET连接。提供事务工厂。可以保持持久化数据存储,使用时导航数据视图,或者靠指示字查询对象。

Persistent Objects and Collections
短生命周期,单线程对象包含持久化状态和业务功能。这些可能是普通对象,唯一特别的是他们与当前会话关联。会话一旦关闭,他们将被分离和不受任何限制的在任意的应用程序层使用。

Transient Object and Collections
持久类的实例,不与当前会话关联。他们可能已经通过应用程序实例化但是没有持久化,或者他们可能在关闭Session时被实例化。

Transaction(NHibernate.ITransaction)
(可选的)单线程,短生命周期对象。通过应用程序使用,详细指定工作单元。抽象至ADO.NET transaction.一个Session可以横跨在一些事件的几个Transactions。
ConnectionProvider(NHibernate.Connection.ConnectionProvider)
(可选的)一个ADO.NET connections工厂。抽象至IDbConnection.不暴露给应用。但是能够被开发者继承。

TransactionFactory(net.sf.hibernate.TransactionFactory)
(可选的)Transaction实例工厂。不暴露给应用,但是能够被开发者继承。

假定一个"lite"架构,应用可以绕过Transation/Transaction,或者ConnectionProvider APIs去直接和ADO.NET会话。


 

posted @ 2007-04-17 15:53  Leo  阅读(340)  评论(0编辑  收藏  举报