木叶c 2016-09-19 03:17 采纳率: 0%
浏览 8259

hibernate执行save方法之后(未提交事务)立刻执行flush方法为什么会执行更新操作?

hibernate执行save方法之后(未提交事务)立刻执行flush方法为什么会执行更新操作?而且每执行一次flush方法就会打印一条update语句?这是为何?请各位大神指教!

  • 写回答

1条回答

  • InterfaceJ 2016-09-21 01:37
    关注

    默认情况下 Session 在以下时间点刷新缓存:
    1、显式调用 Session 的 flush() 方法
    2、当应用程序调用 Transaction 的 commit()方法的时, 该方法先 flush ,然后在向数据库提交事务
    3、当应用程序执行一些查询(HQL, Criteria)操作时,如果缓存中持久化对象的属性已经发生了变化,会先 flush 缓存,以保证查询结果能够反映持久化对象的最新状态

    Session 的 save() 方法使一个临时对象转变为持久化对象
    Session 的 save() 方法完成以下操作:
    1、把 News 对象加入到 Session 缓存中, 使它进入持久化状态
    2、选用映射文件指定的标识符生成器, 为持久化对象分配唯一的 OID. 在 使用代理主键的情况下, setId() 方法为 News 对象设置 OID 使无效的.
    3、计划执行一条 insert 语句:在 flush 缓存的时候

    建议你看一下尚硅谷的hibernate视频,我最近在看这一块,也不是很懂,以上的给你作为参考。

    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波