博為峰JavaEE技術文章 ——MyBatis 緩存(1)

跟現在流行的大多數持久層框架一樣,MyBatis同樣提供了緩存機制。持久層緩存的目的,為了降低應用層對物理數據源(如:數據庫)訪問的頻次,提高應用程序整體性能。緩存將復制數據物理數據源中的數據(或加工后的數據),程序運行時直接從緩存讀寫數據,在特定的時刻或事件發生時會同步緩存和物理數據源的數據。

開啟mybatis的cache功能很簡單,只需要在mappper的xml文件里添加以下節點:

這個cache元素的配置,可以起到以下作用:

1.該Mapper中的所有 select 語句將會被緩存。

2.該Mapper中的所有 insert,update 和 delete 語句會刷新緩存。

3.緩存使用“最近最少使用”的算法來收回。

4.60000毫秒來刷新一次緩存。

5.緩存會存儲1024個列表集合或對象的引用。

6.存會給所有調用者返回緩存對象的相同實例,因此這些緩存不能被修改。

小博老師給大家詳細介紹下cache元素的幾個屬性的含義:

Eviction(緩存回收策略),可用的收回策略有:

LRU – 最近最少使用的:移除最長時間不被使用的對象。

FIFO – 先進先出:按對象進入緩存的順序來移除它們。

SOFT – 軟引用:移除基于垃圾回收器狀態和軟引用規則的對象。

WEAK – 弱引用:更積極地移除基于垃圾收集器狀態和弱引用規則的對象。

默認的是LRU。

flushInterval(刷新間隔)可以被設置為任意的正整數,單位是毫秒。默認情況是不設置,不會間隔刷新緩存,僅僅調用語句時刷新。

size(引用數目)可以被設置為任意正整數,緩存的對象數目,默認值是 1024。

readOnly(只讀)屬性可以被設置為 true 或 false。設置為true意味著該緩存只讀。只讀緩存會給所有調用者返回緩存對象的相同實例。緩存對象對象不能被修改,性能優勢突出。可讀寫的緩存會返回緩存對象的拷貝(通過序列化) 。性能較低,但是安全性突出,因此默認是 false。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容