您的位置:首页 > 其它

hibernate 三种持久化对象的状态

2017-07-10 20:02 260 查看

  

临时状态:

使用对象new初始化的对象状态是瞬时的,也就是说没有跟任何数据库关联的行为,只要不应用这些对象,状态将会丢失,并有垃圾回收机制回收。
特征:
1、不处于Session的缓存中,不跟任何一个Session实例关联。
2、在数据库没记录。
以下情况下,Java对象进入临时状态
通过new语句创建一个java对象,处于临时状态。
Session的delete()方法能使持久化或者游离(脱管)的对象转换为临时状态的对象。

持久化状态:

持久化对象是任何具有数据库标识的实例。由Session统一管理,持久实例是在事务中进行操作的。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中.
持久化对象总是与Session和Transaction关联在一起,在一个session中,对持久化对象的操作不会立即写到数据库,只有当Transaction(事务)结束时,才真正的对数据库更新,从而完成持久化对象和数据库的同步。在同步之前的持久化对象成为脏对象。

游离(脱管)状态:

Session 关闭后 ,持久化状态的对象就成了离线对象。离线表示这个对象不能再与数据库保持同步。
与瞬时状态的区别是:离线对象是有持久化对象转过来的,数据库可能存在对应的记录。瞬时状态则无。
Session一下方法会让持久化状态变为游离状态的对象:close()//清空缓存,如没继续引用,结束生命周期,evict()//从缓存中删除一个持久化对象;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hibernate