Hibernate中的3种对象状态

1.Hibernate中对象的状态分为三种:

瞬时状态:无id无Session绑定
持久状态:有id有Session绑定
托管/游离态:有id无Session绑定
其中id指的是表中的主键属性值

瞬时状态:

  1. 例如 Student stu = new Student( );
  2. 通过new关键字新建出来的对象就是瞬时状态,因为stu目前只是通过JVM分配了一块内存空间的对象并未进入Hibernate的缓存管理,同时在数据库中没有与它相对应的记录。
  3. 通过Hibernate中的delete方法删除后的对象将会从 持久态 --> 瞬时态。
  • 无id主键
  • 无Session关联

持久化状态:

  1. 持久对象是已经保存进数据库的实体对象,并且该对象也还在Hibernate的缓存管理当中。那么只要对该对象进行任何修改,都会在清理缓存前自动同步到数据库中保存。
  2. 常见的 瞬时状态 --> 持久状态的操作有save ( ),saveOrUpdate( );游离/托管状态 -->持久状态 使用update( );
  3. 通过find( ),get( ),load( ),iterate( )等方法查询到的对象也会成为持久化对象。
  • 与Session有关联
  • 在数据库中有相关联的记录(有主键id)

游离/托管状态:

  1. 当持久化状态对象脱离了Hibernate的缓存管理以后,它就变为游离状态,但是它在数据库中仍然有一条相对应的记录,简单的说就是比瞬时状态的对象多了一个id。
  2. 执行close( ),clear( ),evict( )后持久化对象会变为游离托管对象。

引用网络上找到的图片:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43184769/article/details/82977162