有关commit
来源:2-1 MyBatis二级缓存-1
qq_粽翎_0
2020-01-02 23:33:15
之前有问过这个commit现在想再搞清楚点
在我们设置手动提交事务的前提下:如果是增删改操作,最后要commit数据才能持久化到数据库中。如果是查询操作,有没有commit都能查询到数据。
还有本次课的缓存(在同个namespace下,使用了二级缓存):增删改操作后因为要commit所以会清除一二级缓存,而查操作因为没有对数据库中数据进行修改所以无论有没有commit,一二级缓存都存在
2回答
关于同学的理解,第一条是正确的,有没有commit都能查询到数据。
第二条的理解有点问题,执行查询操作时,无论有没有执行commit()操作,二级缓存都存在,但是一级缓存的作用范围是sqlSession,每执行一次查询操作,如果最后调用closeSession()关闭session,那么一级缓存将不存在。如:
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
好帮手慕阿满
2020-01-03
同学你好,一级缓存的范围是sqlSession,二级缓存的范围是namespace。如果开启了二级缓存,无论有没有执行commit操作,查询时,二级缓存存在,但是一级缓存的范围是sqlSession,每执行一次查询,将会closeSession(),导致一级缓存不存在。如果执行了commit操作,
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
相似问题