zoukankan      html  css  js  c++  java
  • hibernate持久化对象三种状态及其转换

    持久化类类三种状态介绍
    1. 瞬时态:也叫做临时态或自由态,它一般指我们 new 出来的对象,它不存在 OID,
         与 hibernate session 无关联,在数据库中也无记录。它使用完成后,会被 jvm 直接
         回收掉,它只是用于信息携带。
    简单说:无 OID 与数据库中的信息无关联,不在 session 管理范围内。
    2. 持久态:在 hibernate session 管理范围内,它具有持久化标识 OID 它的特点,在事
         务未提交前一直是持久态,当它发生改变时, hibernate 是可以检测到的。
    简单说:有 OID session 管理,在数据库中有可能有,也有可有没有。
    3. 托管态:也叫做游离态或离线态,它是指持久态对象失去了与 session 的关联,托
         管态对象它存在 OID,在数据库中有可能存在,也有可能不存在。  
         对于托管态对象,它发生改变时 hibernet 不能检测到。

     

    持久化类三种状态切换

    1. 瞬时态(new 出来的)
     瞬时------>持久 save saveOrUpdate
     瞬时----->脱管(游离) 手动设置 oid
    2. 持久态 它是由 session 管理
     持久------->瞬时 delete() 被删除后持久化对象不在建议使用
     持久----->脱管 注意:session 它的缓存就是所说的一级缓存
     evict(清除一级缓存 中指定的一个对象)
     clear(清空一级缓存)
     close(关闭,清空一级缓存)
    3. 脱管态 (它是无法直接获取)
     脱管----->瞬时 直接将 oid 删除
     脱管---->持久 update saveOrUpdate lock(过时)

  • 相关阅读:
    java中变量的内存分配
    类加载器的双亲委派机制
    缓存行对齐
    缓存一致性与MESI协议
    Mysql优化之join优化
    MySQL crc32 & crc64函数 提高字符串查询效率
    线程不安全
    学习爱上 systemd
    Ubuntu如何备份和恢复系统
    redis报错overcommit_memory is set to 0
  • 原文地址:https://www.cnblogs.com/wsx-wb/p/7338299.html
Copyright © 2011-2022 走看看