• 我对hibernate的对象的3种状态的理解


    老师的说法

    Hibernate中对象的状态
        在Hibernate使用中,对象的状态有以下三种
        a.临时对象 : 在程序中使用new方式创建的对象
        b.持久对象 : 在程序中与session对象关联,由session负责管理的对象.
                       处于session缓存中的对象都是持久对象
                       对象的持久性:指的是对象的数据状态在事务提交时可以与数据库保持同步更新.
                 session.flush();//将持久对象与数据库同步
                 tx.commit();//事务提交,提交前默认也调用session.flush()
        c.托管对象 : 在程序中如果session.close()后,session负责管理的持久对象将成为托管对象.
       垃圾回收器负责回收临时和托管状态,持久状态不能回收.

      1. 临时对象:数据库中不存在该对象且没有与session关联的对象,是代码new 出来的,此时该对象既无ID也是内存中独立的对象
      2. 持久对象:应该分2种情况:
         a. 数据库中不存在该对象,但已经与session关联,并且对象的id也已经存在了,即事务提交时可以与数据库保持同步
         b. 数据库已经存在的对象,类似被session.load出来,此时的对象也是被session管理的,更新和删除等操作,事务提交后当然可以与数据库同步
      3. 脱管对象:
         也有可能数据库中存在或者不存在,其实脱管就是:由session管理变为session不再管理,而交由JVM去管理(可能被回收)
        可能是:
               a. 数据库中存在了,被load出来update
               b. 临时对象已经与session关联,但事务没提交
                  ...
               等情况下,session关闭或清除缓存了。

    先自己理解一下,然后结合老师的说法,此刻总算可以较为清晰的理解hibernate的3种对象状态了。

  • 相关阅读:
    python操作mysql
    django 模型
    sox应用实例:平分一个音频文件
    Python list的各种删除元素操作
    Python sort() 和 sorted() 的区别
    Linux去除文件名中的空格
    合并多个MP4文件
    把wav文件等时长切割
    删除文件里的重复行
    Shell 截取字符串
  • 原文地址:https://www.cnblogs.com/jianglong-liang/p/3301175.html
Copyright © 2020-2023  润新知