有关commit

有关commit

之前有问过这个commit现在想再搞清楚点

在我们设置手动提交事务的前提下:如果是增删改操作,最后要commit数据才能持久化到数据库中。如果是查询操作,有没有commit都能查询到数据。

还有本次课的缓存(在同个namespace下,使用了二级缓存):增删改操作后因为要commit所以会清除一二级缓存,而查操作因为没有对数据库中数据进行修改所以无论有没有commit,一二级缓存都存在

正在回答

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

2回答

关于同学的理解,第一条是正确的,有没有commit都能查询到数据。

第二条的理解有点问题,执行查询操作时,无论有没有执行commit()操作,二级缓存都存在,但是一级缓存的作用范围是sqlSession,每执行一次查询操作,如果最后调用closeSession()关闭session,那么一级缓存将不存在。如:

http://img1.sycdn.imooc.com//climg/5e0edad9095c6a9509270489.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • qq_粽翎_0 提问者 #1
    理解了,谢谢老师
    2020-01-03 14:15:59
好帮手慕阿满 2020-01-03 13:58:13

同学你好,一级缓存的范围是sqlSession,二级缓存的范围是namespace。如果开启了二级缓存,无论有没有执行commit操作,查询时,二级缓存存在,但是一级缓存的范围是sqlSession,每执行一次查询,将会closeSession(),导致一级缓存不存在。如果执行了commit操作,

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 qq_粽翎_0 #1
    老师,我写那些话其实是我的个人理解,我想知道我自己理解的对不对,无论是缓存还是commit的作用,我希望老师能对我的理解进行评论指正,感谢
    2020-01-03 14:03:09
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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