跟現(xiàn)在流行的大多數(shù)持久層框架一樣,MyBatis同樣提供了緩存機(jī)制。持久層緩存的目的,為了降低應(yīng)用層對(duì)物理數(shù)據(jù)源(如:數(shù)據(jù)庫(kù))訪問(wèn)的頻次,提高應(yīng)用程序整體性能。緩存將復(fù)制數(shù)據(jù)物理數(shù)據(jù)源中的數(shù)據(jù)(或加工后的數(shù)據(jù)),程序運(yùn)行時(shí)直接從緩存讀寫(xiě)數(shù)據(jù),在特定的時(shí)刻或事件發(fā)生時(shí)會(huì)同步緩存和物理數(shù)據(jù)源的數(shù)據(jù)。
開(kāi)啟mybatis的cache功能很簡(jiǎn)單,只需要在mappper的xml文件里添加以下節(jié)點(diǎn):
這個(gè)cache元素的配置,可以起到以下作用:
1.該Mapper中的所有 select 語(yǔ)句將會(huì)被緩存。
2.該Mapper中的所有 insert,update 和 delete 語(yǔ)句會(huì)刷新緩存。
3.緩存使用“最近最少使用”的算法來(lái)收回。
4.60000毫秒來(lái)刷新一次緩存。
5.緩存會(huì)存儲(chǔ)1024個(gè)列表集合或?qū)ο蟮囊谩?/p>
6.存會(huì)給所有調(diào)用者返回緩存對(duì)象的相同實(shí)例,因此這些緩存不能被修改。
小博老師給大家詳細(xì)介紹下cache元素的幾個(gè)屬性的含義:
Eviction(緩存回收策略),可用的收回策略有:
LRU – 最近最少使用的:移除最長(zhǎng)時(shí)間不被使用的對(duì)象。
FIFO – 先進(jìn)先出:按對(duì)象進(jìn)入緩存的順序來(lái)移除它們。
SOFT – 軟引用:移除基于垃圾回收器狀態(tài)和軟引用規(guī)則的對(duì)象。
WEAK – 弱引用:更積極地移除基于垃圾收集器狀態(tài)和弱引用規(guī)則的對(duì)象。
默認(rèn)的是LRU。
flushInterval(刷新間隔)可以被設(shè)置為任意的正整數(shù),單位是毫秒。默認(rèn)情況是不設(shè)置,不會(huì)間隔刷新緩存,僅僅調(diào)用語(yǔ)句時(shí)刷新。
size(引用數(shù)目)可以被設(shè)置為任意正整數(shù),緩存的對(duì)象數(shù)目,默認(rèn)值是 1024。
readOnly(只讀)屬性可以被設(shè)置為 true 或 false。設(shè)置為true意味著該緩存只讀。只讀緩存會(huì)給所有調(diào)用者返回緩存對(duì)象的相同實(shí)例。緩存對(duì)象對(duì)象不能被修改,性能優(yōu)勢(shì)突出??勺x寫(xiě)的緩存會(huì)返回緩存對(duì)象的拷貝(通過(guò)序列化) 。性能較低,但是安全性突出,因此默認(rèn)是 false。