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 请完成下列相关问题!