mybatis中的快取和hibernate的快取類似,也分為一級快取和二級快取;
①一級快取:為sqlsession級別的快取。預設開啟。使用同乙個sqlsession執行查詢時,會先從sqlsession的快取中去獲取資料,如果快取中不存在,再去資料庫中查詢,並將查詢結果快取到sqlsession。
特點:1) mybatis的一級快取,使用的perpetualcache類來實現。其內部是通過hashmap來儲存快取資料的。map的key值,基於namespace:sql:引數;
2) mybatis一級快取不存在自動失效,快取淘汰機制。只有當執行了dml(insert update delete)操作並提交時,才會去清空快取;
3) sqlsession關閉時,對應的一級快取失效;
配置:1)在mybatis主配置檔案中配置開啟二級快取;
"cacheenabled" value="
true
"/>
配置二級快取測試**為:eviction:指定快取策略;
lru:最近最少使用策略;(預設規則)
fifo:先進先出;按進入順序進行移除
soft:軟引用;
weak:弱引用;
flushinterval:重新整理時間,單位為毫秒;
size:指定快取的最大儲存個數;
type:指定快取實現,當定義了快取實現方式時,可以通過該屬性配置
"lru
" flushinterval="
300000
" readonly="
false
" size="
1024
">
//測試結果為:測試二級快取
@test
public
void
cache2test()
例如:
MyBatis中的快取
mybatis作為持久化框架,提供了非常強大的快取特性。一般在提到mybatis快取的時候,指的都是二級快取。一級快取,即本地快取,缺省會啟用並且不能控制,可能會導致一些難以發現的錯誤。一 一級快取 public void testl1cache finally system.out.println...
Mybatis中的快取
title mybatis中的快取 tags 新建,模板,小書匠 想要了解mybatis中的快取機制,我們先來看什麼是快取,簡單來說,快取就是存在於記憶體中的臨時資料。那麼,我們為什麼要使用快取呢,就是為了減少與資料庫的互動次數,提高執行效率。那麼問題來了,什麼樣的資料適合存在於快取中呢 首先是經常...
mybatis中的快取
存在於記憶體中的臨時shuju 減少和資料庫的互動次數,提高效率 它指的是mybatis中sqlsession物件的快取。當我們執行查詢之後,查詢的結果同時會存入到sqlsession為我們提供的一塊區域當中。該區域的結構是乙個map結構。當我們再次查詢同樣的資料時,mybatis會先去sqlses...