2 zxy101516 zxy101516 于 2016.09.19 11:17 提问

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

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

1个回答

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

Csdn user default icon
上传中...
上传图片
插入图片