[color=blue]一个持久化类的实例可能处于三种不同状态中的某一种,这三种状态的定义则与所谓的持久化上下文(persistence context)有关。hibernate的session对象就是这个所谓的持久化上下文:
l 瞬态(transient)
该实例从未与任何持久化上下文关联过,它没有持久化标识(相当于主键值)。
l 持久化(persistent)
实例目前与某个持久化上下文有关联,它拥有持久化标识,并且可能在数据库中有一个对应的行,对于某一个特定的持久化上下文,hibernate保证持久化标识与java标识等价。
l 脱管(detached)
实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了,或者这个实例是被序列化到另外的进程。它拥有持久化标识,并且在数据库中可能存在一个对应的行。对于脱管状态的实例,hibernate不保证任何持久化标识和java标识的关系。[/color]
l 瞬态(transient)
该实例从未与任何持久化上下文关联过,它没有持久化标识(相当于主键值)。
l 持久化(persistent)
实例目前与某个持久化上下文有关联,它拥有持久化标识,并且可能在数据库中有一个对应的行,对于某一个特定的持久化上下文,hibernate保证持久化标识与java标识等价。
l 脱管(detached)
实例曾经与某个持久化上下文发生过关联,不过那个上下文被关闭了,或者这个实例是被序列化到另外的进程。它拥有持久化标识,并且在数据库中可能存在一个对应的行。对于脱管状态的实例,hibernate不保证任何持久化标识和java标识的关系。[/color]