程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 詳解Mybatis的二級緩存配置

詳解Mybatis的二級緩存配置

編輯:關於JAVA

一個項目中肯定會存在很多共用的查詢數據,對於這一部分的數據,沒必要

每一個用戶訪問時都去查詢數據庫,因此配置二級緩存將是非常必要的。

Mybatis的二級緩存配置相當容易,要開啟二級緩存,只需要在你的Mapper

映射文件中添加一行:

<cache />

它將采用默認的行為進行緩存:

映射文件中所有的select語句將被緩存

映射文件中所有的insert、update和delete語句將刷新緩存

緩存將使用LRU(Least Recently Used)最近最少使用策略算法來回收

刷新間隔(no Flush Interval,沒有刷新間隔),緩存不會以任何時間順序來刷新

緩存會存儲列表集合和對象(無論查詢方法返回什麼)的1024個引用

緩存會被視為read/write(可讀/可寫)的緩存,意味著對象檢索不是- 共享的,而且可以安全的被調用者修改,而不干擾其他調用者或者線程所做的潛在修改

所有這些屬性都可以通過緩存元素的屬性來修改,比如:

 <!--1小時緩存-->
 <cache eviction="LRU"
   flushInterval="3600000" size="512"
   readOnly="true"/>

這個更高級的配置創建了一個FIFO緩存,並每隔3個小時刷新緩存,儲存結

果對象或列表的512個引用,而且返回的對象被認為是只讀的,因此在不同線程中的調用者之間修改他們會導致沖突。

可用的收回策略有:

【默認】LRU——最近最少使用的:移除最長時間不被使用的對象

FIFO——先進先出的:按對象進入緩存的順序來移除他們

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

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

flushInterval(刷新間隔)可以被設置為任意的正整數(60*60*1000這種形式是不允許的),而且它們代表一個合理的毫秒形式的時間段。默認情況是不設置,也就是沒有刷新間隔,緩存僅僅調用語句時刷新。

size(引用數目)可以被設置為任意正整數,要記住你緩存的對象數目和你運行環境的可用內存資源數目。默認值是1024.

readOnly(只讀)屬性可以被設置為true或false。只讀的緩存會給所有調用者返回緩存對象的相同實例,因此這些對象不能被修改,這提供了很重要的性能優勢。可讀寫的緩存會返回緩存對象的拷貝(通過發序列化)。這會慢一些,但是安全,因此默認是false。

配置完表示該mapper映射文件中,所有的select語句都將被緩存,所有的insert、update和delete語句都將刷新緩存。但是實際中,我們並是希望這樣,有些select不想被緩存時,可以添加select的屬性useCache=“false”;有些insert、update和delete不想讓他刷新緩存時,添加屬性flushCache=”false ”。

以上所述是小編給大家介紹的Mybatis的二級緩存配置,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved