溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MyBatis查詢緩存失效策略

發(fā)布時(shí)間:2024-09-11 11:31:31 來(lái)源:億速云 閱讀:84 作者:小樊 欄目:編程語(yǔ)言

MyBatis 提供了一級(jí)緩存和二級(jí)緩存兩種緩存機(jī)制,它們的作用范圍和失效策略有所不同。

  1. 一級(jí)緩存(SqlSession 級(jí)別的緩存):
  • 作用范圍:一級(jí)緩存是 SqlSession 級(jí)別的緩存,只在同一個(gè) SqlSession 中有效。當(dāng) SqlSession 執(zhí)行 commit、rollback、close 或者 update、insert、delete 操作時(shí),會(huì)清空一級(jí)緩存。

  • 失效策略:一級(jí)緩存的失效策略主要包括以下幾點(diǎn):

    • 當(dāng) SqlSession 執(zhí)行 commit 操作時(shí),會(huì)清空一級(jí)緩存。
    • 當(dāng) SqlSession 執(zhí)行 rollback 操作時(shí),會(huì)清空一級(jí)緩存。
    • 當(dāng) SqlSession 執(zhí)行 close 操作時(shí),會(huì)清空一級(jí)緩存。
    • 當(dāng) SqlSession 執(zhí)行 update、insert、delete 操作時(shí),會(huì)清空一級(jí)緩存。
  1. 二級(jí)緩存(Mapper 級(jí)別的緩存):
  • 作用范圍:二級(jí)緩存是 Mapper 級(jí)別的緩存,跨越多個(gè) SqlSession 共享。需要注意的是,二級(jí)緩存只適用于查詢操作,對(duì)于 update、insert、delete 操作,需要手動(dòng)配置才能觸發(fā)緩存更新。

  • 失效策略:二級(jí)緩存的失效策略主要包括以下幾點(diǎn):

    • 當(dāng) Mapper 執(zhí)行 update、insert、delete 操作時(shí),如果配置了 flushCache=“true”,則會(huì)清空二級(jí)緩存。
    • 當(dāng) Mapper 執(zhí)行 select 操作時(shí),如果配置了 useCache=“false”,則不會(huì)使用二級(jí)緩存。
    • 當(dāng) Mapper 執(zhí)行 select 操作時(shí),如果配置了 resultMap 的 cache 屬性,則會(huì)將查詢結(jié)果存入二級(jí)緩存。
    • 當(dāng) Mapper 執(zhí)行 select 操作時(shí),如果配置了 resultMap 的 eviction 屬性,則會(huì)根據(jù)指定的策略來(lái)清空二級(jí)緩存。

總之,MyBatis 的一級(jí)緩存和二級(jí)緩存都有自己的失效策略,可以根據(jù)實(shí)際需求進(jìn)行配置和調(diào)整。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI