使用redis做mybaties的二級緩存(2)-Mybatis 二級緩存小心使用


 

Mybatis默認對二級緩存是關閉的,一級緩存默認開啟;

下面就說說為什么使用二級緩存需要注意:

    二級緩存是建立在同一個namespace下的,如果對表的操作查詢可能有多個namespace,那么得到的數據就是錯誤的。

    舉個簡單的例子,訂單和訂單詳情,orderMapper、orderDetailMapper、在查詢訂單詳情時我們需要把訂單信息也查詢出來,那么這個訂單詳情的信息被二級緩存在orderDetailMapper的namespace中,這個時候有人要修改訂單的基本信息,那就是在orderMapper的namespace下修改,他是不會影響到orderDetailMapper的緩存的,那么你再次查找訂單詳情時,拿到的是緩存的數據,這個數據其實已經是過時的。

根據以上,想要使用二級緩存時需要想好兩個問題:

1)對該表的操作與查詢都在同一個namespace下,其他的namespace如果有操作,就會發生數據過時。

2)對關聯表的查詢,關聯的所有表的操作都必須在同一個namespace。

總之,操作與查詢在同一個namespace下的查詢才能緩存,其他namespace下的查詢都可能出現問題。

所以對單表單工作空間要注意使用

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM