千鋒教育2023版Java面試寶典Java面試200題(含美團、字節(jié)、阿里大廠真

一級緩存是基于sqlsession默認開啟的,在操作數(shù)據(jù)庫時需要構(gòu)造SqlSession對象,在對象中有一個HashMap用于存儲緩存數(shù)據(jù)。不同的SqlSession之間的緩存數(shù)據(jù)區(qū)域是互相不影響的。
一級緩存作用是sqlsession范圍的,在同一個sqlsession中執(zhí)行兩次相同的sql時,第一次得到的數(shù)據(jù)會緩存放在內(nèi)存中,第二次不再去數(shù)據(jù)庫獲取,而是直接在緩存中獲取,提高效率。
如果執(zhí)行了增刪改并提交到數(shù)據(jù)庫,mybatis是會把sqlsession中的一級緩存清空的,這樣是為了數(shù)據(jù)的準(zhǔn)確性,避免臟讀現(xiàn)象。
二級緩存 :
二級緩存是基于mapper的namespace作用域,但多個
sqlsession操作同一個namespace下的sql時,并且傳入的參數(shù)也相同,執(zhí)行相同的sql語句,第一次執(zhí)行完畢后會將數(shù)據(jù)緩存,這就是二級緩存。
二級緩存同樣是使用HashMap進行數(shù)據(jù)存儲。相比一級緩存
SqlSession,二級緩存的范圍更大,多個Sqlsession可以共用二級緩存,二級緩存它是可以跨越多個sqlsession的。
標(biāo)簽: