zoukankan      html  css  js  c++  java
  • 【转】Hibernate Object States

      Hibernate是一种对象/关系映射的持久化框架,它做的主要工作之一就是对象和数据库表记录之间的状态管理。Hibernate编程环境中操作的对象指的是Entity POJO对象,它存在四种状态:Transient, Persistent, Detached和Removed。下面是从网上摘录的一幅图(源自Java Persistence with Hibernate这本书),非常好地说明了这几种状态之间的转换关系。

    这状态变化描述的是数据库与映射对象之间的关系,也就是一条数据的状态变化。

    从这幅图中,我们可以看到,

    • 对象刚刚创建时是Transient(瞬时)状态,意味着和数据库没有任何关系,只在内存中存在
    • 对象在保存或更新之后,进入Persistent(持久化)状态,此时数据库中已经有对象相应的记录,并生成了ID
    • 当调用Session的clear等方法后,对象从Persistent进入Detached状态,此时Hibernate从缓存中将此对象清除,但在数据库中依然存在
    • Detached状态和Persistent状态可以相互转换,如图所示,如果保存更新对象,对象又从Detached状态进入Persistent状态
    • 也可以通过load或get方法从数据库中获取该对象,从而直接进入Persistent状态
    • 最后,调用Session的delete方法,对象就进入了不可逆转的Removed状态

    其实,这些状态变化还是比较符合常理的,所以只要了解基本原理,然后就可以写写代码验证即可。

    来源:http://ju.outofmemory.cn/entry/104975

  • 相关阅读:
    浅析Java源码之LinkedList
    浅析Java源码之ArrayList
    Vue源码终笔-VNode更新与diff算法初探
    Vue源码后记-更多options参数(2)
    Vue源码后记-更多options参数(1)
    Vue源码后记-其余内置指令(3)
    Vue源码后记-其余内置指令(2)
    Vue源码后记-其余内置指令(1)
    Vue源码后记-vFor列表渲染(3)
    Linux/CentOS 7 timezone 修改
  • 原文地址:https://www.cnblogs.com/run127/p/5635458.html
Copyright © 2011-2022 走看看