Mybatis的一級快取和二級快取的理解和區別

2022-08-27 19:54:11 字數 642 閱讀 5936

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

一級快取的作用域是sqlsession範圍的,當在同乙個sqlsession中執行兩次相同的sql語句時,第一次執行完畢會將資料庫中查詢的資料寫到快取(記憶體),

第二次查詢時會從快取中獲取資料,不再去底層資料庫查詢,從而提高查詢效率。

需要注意的是,如果sqlsession執行了dml操作(增刪改),並且提交到資料庫,mybatis則會清空sqlsession中的一級快取,這樣做的目的是為了保證快取中儲存的是最新的資訊,避免出現髒讀現象。

當乙個sqlsession結束後該sqlsession中的一級快取也就不存在了。

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

evicition收回策略,預設是lru

(1)lru最近最少使用策略,一處做長時間不被使用的物件。

(2)fifo先進先出策略,按物件進入快取的順序來移除它們。

(3)soft軟引用策略,移除基於垃圾**器狀態和軟引用規則的物件。

(4)weak弱引用策略,更積極地移除基於垃圾收集器狀態和弱引用規則的物件

mybatis 快取(一級和二級快取)

1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 跟 web應用中 物件作用範圍類似。cacheenabled value true flushinterval 快取重新整...

Mybatis 一級快取和二級快取

一級快取是sqlsession級別的快取 工作機制 乙個sqlsession就代表和資料庫的一次會話,在資料庫中查出的資料放在一級快取中,同乙個物件再次查詢時,會去快取中查詢,避免了再次查詢資料庫。使用 mybatis預設開啟,不需要手動設定 舉例 同乙個物件,查詢兩次,只呼叫一次sql 注 所有測...

mybatis 快取(一級和二級快取)

1.快取 好處 快取的使用演示 1 sql語句或查詢條件不同 2 分屬不同sqlsession物件 3 查詢前執行clearcache 4 提交事務 2.一級快取 3.二級快取 flushinterval 快取重新整理時間間隔,時間是毫秒,檢查是否存在過期物件 size 快取中儲存的物件個數 rea...