跟現在流行的大多數持久層框架一樣,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。