深入理解MyBatis中的一級快取與二級快取

2021-09-27 07:08:07 字數 514 閱讀 8541

一級快取總結:

前面我們說到,spring和mybatis整合時, 每次查詢之後都要進行關閉sqlsession,關閉之後資料被清空。所以spring整合之後,如果沒有事務,一級快取是沒有意義的。那麼如果開啟二級快取,關閉sqlsession後,會把該sqlsession一級快取中的資料新增到namespace的二級快取中。這樣,快取在sqlsession關閉之後依然存在。

二級快取總結:

對於查詢多commit少且使用者對查詢結果實時性要求不高,此時採用mybatis二級快取技術降低資料庫訪問量,提高訪問速度。

但不能濫用二級快取,二級快取也有很多弊端,從mybatis預設二級快取是關閉的就可以看出來。

二級快取是建立在同乙個namespace下的,如果對錶的操作查詢可能有多個namespace,那麼得到的資料就是錯誤的。

mybatis一級快取

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

MyBatis 一級快取

本地快取作用域預設為該sqlsession。當session flush或 close後,該session中的所有cache將清空。同一次會話期間,只要查詢過的資料都會儲存在當前sqlsession的乙個map中 key hashcode 查詢sql的id 編寫的sql語句 引數 1.不同的sqls...

mybatis一級快取

mybatis一級快取在沒有使用事務後,本地看不到效果,查詢時還是查詢了兩次資料庫。如下圖所示 開啟事務,在同乙個方法 同乙個回話,一級快取才有效果 transactional public refund getrefundtest long brefundid 加上事務後效果如下 一級快取什麼時候...