•
站在持久化的角度
, Hibernate
把对象分为
4
种状态
:
1)
持久化状态
,
2)
临时状态,
3)
游离状态
,
4)
删除状态
.
Session
的特定方法能使对象从一个状态转换到另一个状态
.
•
临时对象(
Transient
)
:
–
在使用代理主键的情况下
,
OID
通常为
null
–
不处于
Session
的缓存中
–
在数据库中没有对应的记录
•
持久化对象
(
也叫”托管”
)
(
Persist
):
–
OID
不为
null
–
位于
Session
缓存中
–
若在数据库中已经有和其对应的记录
,
持久化对象和数据库中的相关记录对应
–
Session
在
flush
缓存时
,
会根据持久化对象的属性变化
,
来同步更新数据库
–
在同一个
Session
实例的缓存中
,
数据库表中的每条记录只对应唯一的持久化对象
•
删除对象
(Removed)
–
在数据库中没有和其
OID
对应的记录
–
不再处于
Session
缓存中
–
一般情况下
,
应用程序不该再使用被删除的对象
•
游离对象
(
也叫”脱管”
)
(
Detached
):
–
OID
不为
null
–
不再处于
Session
缓存中
–
一般情况需下
,
游离对象是由持久化对象转变过来的
,
因此在数据库中可能还存在与它对应的记录