發布時間: 2023-03-31 16:35:24
一級緩存的范圍是sqlsession級別,同一個sqlsession執行同一個sql查詢(相同的sql和參數),第一次會去查詢數據庫并寫到緩存中,第二次從一級緩存中取。
一級緩存是基于PerpetualCache的HashMap本地緩存,默認開啟一級緩存。
如果中間的sqlSession去執行提交操作(執行插入、更新、刪除),會清除SqlSession中的一級緩存,這樣做的目的是讓緩存存儲最新的信息,避免臟讀。
如果執行commit、close、add、delete、update等操作,當前的一級緩存就會被清空;當對SqlSession執行更新操作(更新、刪除、插入)后再執行commit,不僅自身的一級緩存會被清空(執行更新操作的效果),而且二級緩存也會被清空(執行commit()的效果)。
當MyBatis打開一個數據庫會話時,它會創建一個新的SqlSession對象,它有一個Executor對象,Executor對象持有一個PerpetualCache對象,見下面的代碼。當會話結束時,SqlSession對象及其內部的Executor對象和PerpetualCache對象也被一起釋放。
上一篇: mybatis二級緩存什么意思
下一篇: MyBatis緩存機制介紹