hibernate 的三种状态

来源:互联网 发布:it培训学校排名 编辑:程序博客网 时间:2024/05/22 16:52

hibernate的对象有3种状态,分别为:瞬时态(Transient)、持久态(Persistent)、脱管态(Detached).处于持久态的对象也称为PO(PersistenceObject),如图

这里写图片描述

临时状态:即Person person = new Person(),创建一个新对象,该对象没有与session进行交互,没有被调用的话就会随时间被java 的垃圾回收机制给收回。我们可以通过session.save来进行保存

持久状态 : 处于该状态的对象在数据库中具有对应的记录,并拥有一个持久化标识.如果是用hibernate的delete()方法,对应的持久对象就变成瞬时对象,因数据库中的对应数据已被删除,该对象不再与数据库的记录关联.
当一个session执行close()或clear()、evict()之后,持久对象变成脱管对象,此时持久对象会变成脱管对象,此时该对象虽然具有数据库识别值,但它已不在HIbernate持久层的管理之下.

持久对象具有如下特点:

1.和session实例关联;

2.在数据库中有与之关联的记录

游离状态:
持久化对象脱离了Session后的对象。如Session缓存被清空后的对象。已经持久化,单不存在于Session中——此状态中的对象为游离对象。

2,三种状态的区分:
(1)对象有没有Id——如果没有Id,一定是Transient状态
(2)Id在数据库中有没有
(3)在内存中有没有(session缓存)

0 0
原创粉丝点击