有关commit

来源:2-1 MyBatis二级缓存-1

qq_粽翎_0

2020-01-02 23:33:15

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

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

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

写回答

2回答

好帮手慕阿满

2020-01-03

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

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

http://img.mukewang.com/climg/5e0edad9095c6a9509270489.jpg

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

0
hq_粽翎_0
h 理解了,谢谢老师
h020-01-03
共1条回复

好帮手慕阿满

2020-01-03

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

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

0
hq_粽翎_0
h 老师,我写那些话其实是我的个人理解,我想知道我自己理解的对不对,无论是缓存还是commit的作用,我希望老师能对我的理解进行评论指正,感谢
h020-01-03
共1条回复

0 学习 · 8016 问题

查看课程