木叶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 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序