NHibernate中持久性模型的确切含义是啥?
Posted
技术标签:
【中文标题】NHibernate中持久性模型的确切含义是啥?【英文标题】:What's the exact meaning of Persistence model in NHibernate?NHibernate中持久性模型的确切含义是什么? 【发布时间】:2012-06-24 21:50:48 【问题描述】:我是 Orm 工作的新手,我遇到了这个问题,即 NHibernate 中的 持久性模型 以及 transient 对象和 之间的区别>持久的对象。
【问题讨论】:
【参考方案1】:以下是来自nhibernate 的documentation 的定义:
持久对象和集合
包含持久状态的短寿命单线程对象和 业务功能。这些可能是普通的 POCO,唯一的特殊 关于他们的事情是他们目前与(确切地说 一)ISession。一旦会话关闭,它们将被分离 并且可以在任何应用层免费使用(例如直接作为数据 将对象传输到演示文稿和从演示文稿传输)。
瞬态对象和集合
当前未关联的持久类的实例 一个会话。它们可能已由应用程序实例化,而不是 (然而)持续存在或者它们可能已经被一个封闭的实例化了 会话。
在instance states:
一个持久类的实例可能在三个不同的之一中 状态,它们是针对持久性上下文定义的。这 NHibernate ISession 对象是持久化上下文:
瞬态
该实例不是,也从未与任何 持久性上下文。它没有持久的身份(主键 价值)。
持久
该实例当前与持久性上下文相关联。它 有一个持久的身份(主键值),也许,一个 数据库中对应的行。对于特定的持久性 在上下文中,NHibernate 保证持久标识是等价的 到 CLR 标识(对象的内存中位置)。
分离
该实例曾经与持久性上下文相关联,但 上下文已关闭,或实例已序列化到另一个进程。 它有一个持久的身份,也许,在 数据库。对于分离的实例,NHibernate 不保证 持久身份和CLR身份之间的关系。
【讨论】:
以上是关于NHibernate中持久性模型的确切含义是啥?的主要内容,如果未能解决你的问题,请参考以下文章