zoukankan      html  css  js  c++  java
  • 说说hibernate的三种状态之间如何转换?

    hibernate的三种状态是瞬时状态、持久状态、托管状态
    瞬时态(临时态、自由态):不存在持久化标识 OID,尚未与 Hibernate Session 关联对象, 被认为处于瞬时态,失去引用将被 JVM。
    回收持久态:存在持久化标识 OID,与当前 session 有关联,并且相关联的 session 没有关闭 , 并且事务未提交。
    脱管态(离线态、游离态):存在持久化标识 OID,但没有与当前 session 关联,脱管状态 改变 hibernate 不能检测到。

    比如有一个User实体类和一张User表。当new了一个user对象,但没有开启事务。此时user就处于瞬时状态,与数据库的数据没有任何联系,当开启事务后,执行了session.save()方法后,session缓存中存放了该user对象,而数据库中也有相应的这条数据,此时就转换为持久状态。当事务提交后,session被销毁。session缓存中就没有user对象,而数据库表中有相应记录,此时为托管状态。

  • 相关阅读:
    python
    python
    日常使用 小技巧 ~ (长期更新)
    日常的 小 bug ~(长期更新)
    BUUCTF Re部分wp(MIPS特别篇)
    [FlareOn5]FLEGGO
    [FlareOn6]BMPHIDE
    配置搭建单机rocketmq及rocketmq集群
    nessus服务安装与使用
    HTTP缓存技术详解
  • 原文地址:https://www.cnblogs.com/WangMengyi/p/14275412.html
Copyright © 2011-2022 走看看