mybatis二级缓存的使用场景及脏数据的产生

  MyBatis 的二级缓存是和命名空间绑定的,所以通常情况下每一个 Mapper 映射文件都拥有 自己的二级缓存,不同 Mapper 的二级缓存互不影响。在常见的数据库操作中,多表联合查询非常常见,由于关系型数据库的设计, 使得很多时候需要关联多个表才能获得想要的数据。在关联多表查询时肯定会将该查询放到某个命名空间下的映射文件中,这样一个多表的查询就会缓 存在该命名空间的二级缓存中。涉及这些表的增、删、改操作通常不在一个映射文件中,它们 的命名空间不同, 因此当有数据变化时,多表查询的缓存未必会被清空,这种情况下就会产生 脏数据。 

在以下场景中,推荐使用二级缓存。

1. 以查询为主的应用中,只有尽可能少的增、删、改操作;

2. 绝大多数以单表操作存在时,由于很少存在互相关联的情况,因此不会出现脏数据。

posted @ 2019-04-28 15:39  沈叶唐  阅读(1864)  评论(0编辑  收藏  举报