hibernate 三种持久化对象的状态  



临时状态:

使用对象new初始化的对象状态是瞬时的,也就是说没有跟任何数据库关联的行为,只要不应用这些对象,状态将会丢失,并有垃圾回收机制回收。

特征:

1、不处于Session的缓存中,不跟任何一个Session实例关联。

2、在数据库没记录。

以下情况下,Java对象进入临时状态

通过new语句创建一个java对象,处于临时状态。

Session的delete()方法能使持久化或者游离(脱管)的对象转换为临时状态的对象。



持久化状态:

持久化对象是任何具有数据库标识的实例。由Session统一管理,持久实例是在事务中进行操作的。当事务提交时,通过执行SQL的INSERT、UPDATE和DELETE语句把内存中的状态同步到数据库中.

持久化对象总是与SessionTransaction关联在一起,在一个session中,对持久化对象的操作不会立即写到数据库,只有当Transaction(事务)结束时,才真正的对数据库更新,从而完成持久化对象和数据库的同步。在同步之前的持久化对象成为脏对象。



游离(脱管)状态:

Session 关闭后 ,持久化状态的对象就成了离线对象。离线表示这个对象不能再与数据库保持同步。

与瞬时状态的区别是:离线对象是有持久化对象转过来的,数据库可能存在对应的记录。瞬时状态则无。

Session一下方法会让持久化状态变为游离状态的对象:close()//清空缓存,如没继续引用,结束生命周期,evict()//从缓存中删除一个持久化对象;




相关文章:

  • 2021-04-06
  • 2021-10-06
  • 2021-09-14
  • 2021-10-27
  • 2021-12-08
猜你喜欢
  • 2021-10-28
  • 2021-08-01
  • 2022-12-23
  • 2021-08-03
  • 2021-08-02
  • 2021-05-17
相关资源
相似解决方案