Hibernate中 对象 的三种状态

妖狐艹你老母 2021-10-06 13:26 436阅读 0赞

在Hibernate中,可以把实体对象看成3中状态,分别是:瞬时态(临时态)、持久态、脱管态(游离态)。


临时态

  • 转换
  1. * 通过new创建的对象为瞬时态
  2. * 通过delete方法操作的对象将转变为瞬时态
  • 特征
  1. * 瞬时态的对象可以被垃圾回收
  2. * 瞬时态的对象未进行过持久化,未与session关联

持久态

  • 转换
  1. * 通过get load list iterate 方法查询到的对象为持久态
  2. * 通过save update 方法操作的对象转变为持久态
  • 特征
  1. * 持久态对象垃圾回收器不能回收
  2. * 持久态对象进行了持久化,与session相关联,实际上持久态对象存在于session缓存中,由session负责管理。
  3. * 持久态对象的数据可以自动更新到数据库中,时机是在调用session.flush()时执行。而提交事务时会调用session.flush(),因此提交事务时也会触发同步,可以理解为ts.commit=session.flush()+commit

脱管态

  • 转换
  1. * 通过sessionevict clear close 方法操作的对象会转变为脱管态
  • 特征
  1. * 脱管态的对象可以被垃圾回收
  2. * 脱管态的对象进行过持久化,但已于session解除了关联

3种状态的转换:

这里写图片描述


瞬时态: session、数据库 里都没有。

持久态: session、数据库 里都有

脱管态: session里有、数据库里没有

发表评论

表情:
评论列表 (有 0 条评论,436人围观)

还没有评论,来说两句吧...

相关阅读

    相关 说说Hibernate对象状态

    下班了闲的没事,发现今天写了好多文章,自己也是在写这些东西的时候学到很多东西,希望自己能一直坚持的写下去,正好今天和同事讨论到了Hibernate的中对象的的三种状态,所以下面