MyBatis 快取詳解 一級快取(本地快取)介紹

2021-10-11 15:30:33 字數 470 閱讀 4502

一級快取也叫本地快取,mybatis 的一級快取是在會話(sqlsession)層面進行快取的。mybatis 的一級快取是預設開啟的,不需要任何的配置。

首先我們必須去弄清楚乙個問題,在mybatis 執行的流程裡面,涉及到這麼多的物件,那麼快取perpetualcache 應該放在哪個物件裡面去維護?如果要在同乙個會話裡面共享一級快取,這個物件肯定是在sqlsession 裡面建立的,作為sqlsession 的乙個屬性。

defaultsqlsession 裡面只有兩個屬性,configuration 是全域性的,所以快取只可能放在executor 裡面維護——******executor/reuseexecutor/batchexecutor 的父類baseexecutor 的建構函式中持有了perpetualcache。

接下來我們來驗證一下,mybatis 的一級快取到底是不是只能在乙個會話裡面共享,以及跨會話(不同session)操作相同的資料會產生什麼問題。

mybatis一級快取詳解

1.mybatis一級快取 一級快取 sqlsession快取 會話快取 預設開啟,使用者不能關閉 有方法讓其失效 通過同乙個sqlsession呼叫同乙個查詢方法兩次,第二次查詢走的快取。下面我們就看看一級快取怎麼儲存的?在建立sqlsession的時候會建立executor baseexecut...

MyBatis 快取詳解 一級快取驗證

基於mybatis standalone 工程,注意演示一級快取需要先關閉二級快取,localcachescope 設定為session 判斷是否命中快取 如果再次傳送sql 到資料庫執行,說明沒有命中快取 如果直接列印物件,說明是從記憶體快取中取到了結果。1 在同乙個session 中共享 2 不...

mybatis一級快取

autowired private sqlsessionfactory sqlsessionfactory autowired test transactional public void test selectall.size log.info 第2次查詢 selectall2.size 同乙個s...