• 持久对象的生命周期


    持久化对象的状态:

    瞬时对象(Transient objects):使用new创建的对象不是立刻就持久的,它们的状态是瞬时的,也就是说没有跟数据库表相关联的行为,只要应用不再引用这些对象,它们的状态就会丢失,并由垃圾回收机制回收。

    持久化对象(Persist objects):持久实例是任何具有数据库标示的实例,它有持久化管理器Session统一管理,持久实例是在事务中进行操作的,它们的状态在事务结束时同数据库进行同步,当事务提交时,通过执行sql的insert,update和delete语句把内存中的状态同步到数据库中。持久化对象不会被垃圾回收,因为Session相当于一个一级缓存,该对象在执行save()方法后,会把对象保存在map中,也就是说此时map引用了对象,所以就不会被垃圾回收。

    离线对象(Detached objects):Session关闭之后,持久化对象就变为离线对象,离线表示这个对象不能再与数据库保持同步,它们不再受hibernate管理。

    当一个瞬时对象通过session的save()操作后就会变成持久对象,当执行了session的close()方法那么就会把持久对象变为离线对象,当离线对象update()操作后会变成持久对象,持久对象执行了delete()操作就变成了瞬时对象。

  • 相关阅读:
    yield* 表达式
    Set 对象和WeakSet对象
    洗牌算法
    filter() 方法创建一个新数组
    UTF8文件带BOM引起的问题
    ios的白屏坑
    css的字体样式怎么写
    npm全局安装失效修复
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)解决方案
    linux下nginx的安装及配置
  • 原文地址:https://www.cnblogs.com/jinzhengquan/p/1955611.html
Copyright © 2020-2023  润新知