zoukankan      html  css  js  c++  java
  • hibernate对象的三种状态

      博客地址http://www.cnblogs.com/shizhongtao/p/3437372.html,欢迎转载

      使用hibernate时候,对于任何一个实体类都有三种状态,他们分别是transient、persistent、detached。以前上课时候,老师给过一个示意图:

    在上图中,讲述了三种状态的转换。下面,以自己的理解对三种状态分别进行说明,不过要注意一点,在hibernate3以后session就没有find和iterate方法了,有query接口的list方法来代替。

    • transient:当我们实例化一个对象时候,它就处于这种状态,状态具体表现是,它只是内存中一个对象,没对应的数据库ID,缓存中也没有,不会触发任何数据库语句。
    • persistent:结合上图,当我们使用session的get(),load(),save(),等方式时候,所对应的对象就会从transient对象转换到persistent状态。具体表现是,内存中有这个对象,缓存中有(对应的一个hashmap,有key指向这个对象),数据库有对象对应的(ID)。当执行delete操作之后,这个对象就会转化为transient状态。
    • detached:处于persistent状态的对象,当执行过close,clear方法,就会转换为detached状态此时状态表现是,内存有这个对象,缓存没有这个对象,数据库有对应的记录,

     理解好这三种状态,就会在事物提交之后,明白为什么有的更改可以同步到数据库中,有的却不能的原因。

     具体事例以后有时间给出,待续……

  • 相关阅读:
    「考试」省选27
    「考试」省选26
    「考试」省选25
    $dy$讲课总结
    「笔记」$Min\_25$筛
    「考试」省选24
    「总结」多项式生成函数例题(4)
    「总结」多项式生成函数相关(4)
    「考试」省选23
    「总结」后缀3
  • 原文地址:https://www.cnblogs.com/shizhongtao/p/3437372.html
Copyright © 2011-2022 走看看