关于执行commit后清空缓存

关于执行commit后清空缓存

问题描述:

二级缓存中,提交commit(); 后是会清空缓存的吧? 为什么这里提交了commit(); 后,第三个对象的hashCode值与之前两个一样,select语句也只执行了一次

相关截图:

https://img1.sycdn.imooc.com//climg/629c6bdd0972a9f914790854.jpg

https://img1.sycdn.imooc.com//climg/629c6c38093defcb14480857.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2022-06-05 17:04:58

同学你好,在课程12分30秒位置有所强调,commit清空缓存是因为执行了insert操作,而不是同学代码中的select操作。

在数据库中,select操作读取数据并不会对数据库中的数据进行更改,所以不会引起缓存的清空。

祝学习愉快~


  • 提问者 慕莱坞4521678 #1

    https://img1.sycdn.imooc.com//climg/629c73560993cde318680853.jpg

    可是视频2-1中,执行了commit后,第二个会话中执行了两次select语句,

    而且14:07时老师说执行commit后,会把当前namespace中所有缓存进行强制清空


    2022-06-05 17:20:40
  • 好帮手慕小蓝 回复 提问者 慕莱坞4521678 #2

    同学你好,这里需要同学确认一下,是否在select标签中添加了属性:

    flushCache="true"

    另外,建议同学检查一下实体类中是否重写了hashCode方法。如果重写了该方法,那么获取的哈希值相同就是正常的,因为两次获取的对象属性是一样的,那么计算获得的哈希值应该也是一样的。

    这里建议同学不在实体类中重写toString,这样会默认使用父类Object类中的toString方法进行对象地址的打印。这里如果两个地址不同的话,就可以证明确实清空了缓存。

    祝学习愉快~


    2022-06-05 18:30:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师