0

我是 Orm 工作的新手,这个问题发生在我身上,NHibernate 中的持久性模型是什么以及瞬态对象和持久对象之间的区别是什么。

4

1 回答 1

0

以下是文档中的定义:

持久对象和集合

包含持久状态和业务功能的短寿命单线程对象。这些可能是普通的 POCO,唯一的特殊之处在于它们当前与(恰好一个)ISession 相关联。一旦 Session 关闭,它们将被分离并在任何应用程序层中自由使用(例如,直接作为数据传输对象进出演示文稿)。

瞬态对象和集合

当前未与 ISession 关联的持久类的实例。它们可能已由应用程序实例化,但尚未(尚未)持久化,或者它们可能已由关闭的 ISession 实例化。

并在实例状态

持久类的实例可能处于三种不同状态之一,这些状态是针对持久性上下文定义的。NHibernate ISession 对象是持久化上下文:

短暂的

该实例不是,也从未与任何持久性上下文相关联。它没有持久标识(主键值)。

执着的

该实例当前与持久性上下文相关联。它有一个持久的身份(主键值),也许还有数据库中的对应行。对于特定的持久性上下文,NHibernate 保证持久性身份等同于 CLR 身份(对象的内存中位置)。

分离的

该实例曾经与一个持久性上下文相关联,但该上下文已关闭,或者该实例已序列化到另一个进程。它有一个持久的身份,也许还有数据库中的对应行。对于分离的实例,NHibernate 不保证持久身份和 CLR 身份之间的关系。

于 2012-06-24T22:51:35.347 回答