文 / 喝口水就走
对于需要被持久化的Java/.net对象,在它的生命周期中,可处于以下三个状态之一
临时状态(transient):刚刚用new创建,还没有被持久化,不处于Session缓存中。
持久化状态(persistent):已经被持久化,加入到Session的缓存中了。
游离状态(detached):已经持久化,但不在Session的缓存中了。
如何进入临时状态
[1]通过new创建一个临时对象。
[2]session.delete()方法能使一个持久化或游离对象转变为临时对象。
对于游离对象,delete()方法从DB中删除与其对应的记录;对于持久化对象,delete()方法从DB中删除与其对应的记录,并且把它从Session缓存中删除。
如何进入持久化状态
[1]session.save()把临时对象变为持久化对象
[2]session.load(),session.get()返回的对象总是持久化对象
[3]session.find()返回的List集合众存放的都是持久化对象
[4]session.update(),session.saveOrUpdate(),session.lock()方法使游离对象转变为持久化对象
[5]当一个持久化对象关联一个临时对象,在允许级联保存的情况下,Session在清理缓存是会把这个临时对象也转变为持久化对象。
如何进入游离状态
[1]session.close()使缓存中所有持久化对象都变为游离对象
[2]session.evict()从缓存中删除一个对象,使其变为游离对象。不推荐使用。
其他相关文章
Hibernate组成关系的映射
Hibernate批量更新和删除问题
Hibernate缓存技术
Hibernate Java/.net对象的状态
Hibernate Session缓存
Hibernate 检索策略
Hibernate 检索相关细节问题
Hibernate 继承关系的映射
Hibernate 一对多关系的映射
Hibernate 对象与关系的映射基础
Hibernate跑起来
Hibernate的核心接口
插入表情