Mybatis的快取機制

2022-03-12 02:40:35 字數 855 閱讀 8009

首先解釋sqlsession:意思大致是一次資料庫會話,包括開啟連線,執行sql,commit,關閉連線。相當於jdbc的session。

一級快取:

mybatis的一級快取是sqlsession級別的快取,在運算元據庫時需要構造sqlsession物件,在物件中有乙個hashmap用於儲存快取資料,不同的sqlsession之間快取資料區域(hashmap)是互相不影響的。

一級快取的作用域是sqlsession範圍的,當在同乙個sqlsession中執行兩次相同的sql語句時,第一次執行完畢會將資料庫中查詢的資料寫到快取(記憶體)中,第二次查詢時會從快取中獲取資料,不再去底層進行資料庫查詢,從而提高了查詢效率。需要注意的是:如果sqlsession執行了dml操作(insert、update、delete),並執行commit()操作,mybatis則會清空sqlsession中的一級快取,這樣做的目的是為了保證快取資料中儲存的是最新的資訊,避免出現髒讀現象。

當乙個sqlsession結束後該sqlsession中的一級快取也就不存在了,mybatis預設開啟一級快取,不需要進行任何配置。

注意:mybatis的快取機制是基於id進行快取,也就是說mybatis在使用hashmap快取資料時,是使用物件的id作為key,而物件作為value儲存

二級快取:

mybatis預設沒有開啟二級快取,需要在setting全域性引數中配置開啟二級快取。

在mybatis-config.xml中配置:

settings>  

cacheenabled的value為true表示在此配置檔案下開啟二級快取,該屬性預設為false。

以上配置建立了乙個lru快取,並每隔60秒重新整理,最大儲存512個物件,而且返回的物件被認為是唯讀。

mybatis快取機制

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

MyBatis 快取機制

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

Mybatis 快取機制

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