MyBatis快取機制的設計

2021-10-18 22:48:15 字數 1480 閱讀 2883

session會話級別的快取,位於表示一次資料庫會話的sqlsession物件之中,即本地快取

一級快取是mybatis內部實現的乙個特性,使用者不能配置預設自動支援,使用者無定製權利。

應用級別的快取,生命週期長,跟應用的生命週期一樣,即作用範圍為整個應用。

預設關閉,也不建議使用,一般用redis第三方來替代。

一級快取是session級別,一般乙個sqlsession物件會使用乙個executor物件來完成會話操作,executor物件會維護乙個cache快取,以提高查詢效能,減少對db的壓力。

如果使用者配置了cacheenabled=true,那麼在為sqlsession物件建立executor物件時,會對executor物件加上乙個裝飾者cachingexecutor,這時sqlsession使用cachingexecutor物件完成操作請求。

mybatis二級快取設計靈活,可以使用:

mybatis:

type

="org.mybatis.caches.ehcache.loggingehcache"

>

name

="memorystoreevictionpolicy"

value

="lru"

/>

cache

>

"selectarticlelistpage"

resultmap

="resultuserarticlelist"

usecache

="false"

>

public

void

query()

為什麼還這樣設計呢?你會寫這樣寫**的概率很低。

mybatis快取機制

mybatis和hibernate一樣,也提供了一二級快取。若存在一二級快取,則資料不會去資料庫互動,而是去記憶體中獲取。一級快取是sqlsession級別的快取。在運算元據庫時需要構造sqlsession物件,在物件中有乙個資料結構 一般來說是hashmap 來儲存快取資料。不同的sqlsessi...

MyBatis 快取機制

mybatis 提供了查詢快取來獲取資料,以提高查詢的效能。mybatis 的快取分為一級快取和二級快取。1 一級快取一級快取是 sqlsession 級別的快取,是基於 hashmap 的本地快取。不同的 sqlsession 之間的快取資料區域互不影響。當同乙個 sqlsession 執行兩次相...

Mybatis 快取機制

查詢快取主要是為了提高查詢訪問速度,即當使用者執行一次查詢後,會將該資料結果放到快取中,當下次再執行此查詢時就不會訪問資料庫了而是直接從快取中獲取該資料。如果在快取中找到了資料那叫做命中。同一sqlsession 多次查詢同一sql時會使用快取 test public void testlocalc...