• 技术文章 >java >java基础

    java之Hibernate的状态整理

    小妮浅浅小妮浅浅2021-03-22 10:03:07原创1767

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    1.瞬时状态

    通过new开辟内存空间创建的实体对象,但是它没有纳入hibernate session的管理之中,如果没有变量对它引用,它将会被JVM(垃圾回收器)回收。瞬时状态的对象在内存中是孤立的,它与数据库无任何关联,仅仅是一个信息携带的载体。

    一个瞬时状态对象被持久化状态对象引用,它也会自动变为持久化状态对象。例如调用session的save、saveorupdate等方法的时候。

    特征:

    1)使用 new 创建出来的对象,没有设置 id 属性

    2)没有被 session 托管,换句话说 对象数据 存放在内存中, 没有存放到 session 缓存中

    3)临时对象数据 与 数据库中的数据 还没任何关联

    2.持久化状态

    持久化状态对象存在与数据库中的数据关联,它总是与会话状态(Session)和事务(Transaction)关联在一起。当持久化状态对象发生变动时并不会立即执行数据库操作,只有当事务结束时,才会更新数据库,以便保证Hibernate的持久化对象和数据库操作的同步性。

    当持久化状态对象变为托管状态对象时,它将不在Hibernate持久层的管理范围之内。

    特征:

    1)要么是从数据库中使用 get 或 load 方法查询到的数据对象, 要么是 使用save 或 update 方法数据转变成持久层对象

    2)对象 数据被 session 托管。换句话说 对象数据 在 session 缓存中有一份,在数据库中有相应的记录

    3.脱管状态

    持久化对象的Session关闭之后,这个对象就从持久化状态变为托管状态。托管状态的对象仍然在与数据库中的数据关联,但是他并不在Hibernate的Session管辖范围之内。

    如果将脱管状态的对象重新关联到某个新的Session上,它将变回持久化状态对象。

    特征:

    1)主要是通过 持久状态对象,调用 session.evict() 或 session.clear() 或 session.close() 得到的,也可以new 一个设置 id 值的对象

    2)session 缓存中没有,内存中有的对象(注: 该对象设置了 id 值)

    4.删除态

    调用session的delete方法时,对象转为删除态。删除态只能等待被回收。

    以上就是java之Hibernate的状态整理,相信大家已经掌握住了基本要点。本篇主要是一些理论的介绍,关于实际的运用会在Hibernate框架中有所涉及。

    专题推荐:java,hibernate状态
    上一篇:java中Hibernate有几种缓存形式 下一篇:java中ORM的基本内容

    相关文章推荐

    • java中Hibernate框架的安装• java中Hibernate的环境配置• java中Hibernate的内容详解• java中Hibernate有几种缓存形式

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网