一、一級緩存
1、在?個sqlSession中,對User表根據id進行兩次查詢,查看他們發出sql語句的情況。
2、同樣是對user表進?兩次查詢,只不過兩次查詢之間進?了?次update操作。
3、總結
(1)第?次發起查詢?戶id為1的?戶信息,先去找緩存中是否有id為1的?戶信息,如果沒有,從數據庫查詢?戶信息。得到?戶信息,將?戶信息存儲到?級緩存中。
(2)如果中間sqlSession去執?commit操作(執?插?、更新、刪除),則會清空SqlSession中的?級緩存,這樣做的目的為了讓緩存中存儲的是最新的信息,避免臟讀。
(3)第?次發起查詢用戶id為1的?戶信息,先去找緩存中是否有id為1的?戶信息,緩存中有,直接從緩存中獲取用戶信息
二、?級緩存
?級緩存的原理和?級緩存原理一樣,第?次查詢,會將數據放?緩存中,然后第?次查詢則會直接去緩存中取。
但是?級緩存是基于sqlSession的,??級緩存是基于mApper?件的namespace的,也就
是說多個sqlSession可以共享?個mapper中的?級緩存區域,并且如果兩個mapper的namespace相同,即使是兩個mapper,那么這兩個mapper中執?sql查詢到的數據也將存在相同的?級緩存區域中。