1. 程式人生 > >MyBatis的一級快取和二級快取

MyBatis的一級快取和二級快取

私人筆記,不喜勿噴,噴就揍你

一級快取不跨sqlsession,不同的sqlsession中的一級快取不同,每次查詢的時候先去一級快取中查,若沒有再到資料庫查詢,然後存入一級快取,若執行了commit操作,一級快取則被清空,設計成會清空是為了防止髒讀,一級快取不需要在.xml中進行設定,預設開啟

正式開發時,事務由spring管理,發生在service中,一個service中包括很多mapper方法的呼叫,當事務開啟時,建立一個sqlsession,事務結束時,關閉sqlsession,所有一個service可以使用1級快取。

二級快取,預設不開啟,每一個namespace有一個二級快取區域,如果兩個mapper的namespace相同,它們的二級快取區域是同一個。執行commit也會清空對應的二級快取。

二級快取的開啟,在sqlMapConfig.xml和對應的mapper.xml中都需要進行配置

在mapper.xml中的配置,寫一個<cache/>標籤就可以了,標籤裡的引數需要時再配置

禁用二級快取

二級快取的儲存介質不固定,可以是記憶體也可以是硬碟,或者是遠端伺服器,所以要求pojo實現序列化介面

session不關閉,資料寫不到二級快取區域

=================================華麗的分割線============================

測試用的: