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

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视频,我最近在看这一块,也不是很懂,以上的给你作为参考。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!