一、一級快取(本地快取預設開啟):sqlsession級別的快取。一級快取是一直開啟的,無法關閉。sqlsession級別的乙個map
與資料庫同義詞會話期間查詢到的資料會放到本地快取中。
以後如果需要獲取相同的資料,直接從快取中拿,沒有必要再去查詢資料庫。
1.一級快取失效情況:
沒有使用到當前一級快取的情況,效果就是,還需要再向資料庫發出查詢。
1)sqlsession不同
sqlsession opensession = sqlsessionfactory.opensession();
sqlsession opensession2 = sqlsessionfactory.opensession();
2)sqlsession相同,查詢條件不一樣。原因是當前快取中沒有改變查詢條件後的資料
3)sqlsession相同,查詢條件一樣,兩次查詢之間執行了增刪改操作(這次增刪改可能對當前資料有影響)
4)sqlsession相同,手動清除了一級快取(快取清空)
opensession.clearcache();//清空一級快取方法
二、二級快取(全域性快取):基於namespace級別的快取:乙個namespace對應乙個二級快取
工作機制:
1.乙個會話,查詢一條資料,這個資料就會被放在當前會話的一級快取中。
2.如果會話關閉:一級快取中的資料會被儲存到二級快取中:新的會話查詢資訊,就可以參照二級快取中。
不同namespace查出的資料會放在自己對應的快取中(map)
使用方法:
1)開啟全域性二級快取配置:
mybatis快取機制
mybatis和hibernate一樣,也提供了一二級快取。若存在一二級快取,則資料不會去資料庫互動,而是去記憶體中獲取。一級快取是sqlsession級別的快取。在運算元據庫時需要構造sqlsession物件,在物件中有乙個資料結構 一般來說是hashmap 來儲存快取資料。不同的sqlsessi...
MyBatis 快取機制
mybatis 提供了查詢快取來獲取資料,以提高查詢的效能。mybatis 的快取分為一級快取和二級快取。1 一級快取一級快取是 sqlsession 級別的快取,是基於 hashmap 的本地快取。不同的 sqlsession 之間的快取資料區域互不影響。當同乙個 sqlsession 執行兩次相...
Mybatis 快取機制
查詢快取主要是為了提高查詢訪問速度,即當使用者執行一次查詢後,會將該資料結果放到快取中,當下次再執行此查詢時就不會訪問資料庫了而是直接從快取中獲取該資料。如果在快取中找到了資料那叫做命中。同一sqlsession 多次查詢同一sql時會使用快取 test public void testlocalc...