Mybatis的二級快取配置

2021-07-28 09:30:05 字數 2678 閱讀 7410

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

eviction="fifo"  

flushinterval="10800000"  size="512" 

readonly="true"  

/> 

這個更高階的配置建立了乙個fifo快取,並每隔3個小時重新整理快取,儲存結

果物件或列表的512個引用,而且返回的物件被認為是唯讀的,因此在不同執行緒中的呼叫者之間修改他們會導致衝突。

可用的收回策略有:

flushinterval(重新整理間隔)可以被設定為任意的正整數(60*60*1000這種形式是不允許的),而且它們代表乙個合理的毫秒形式的時間段。預設情況是不設定,也就是沒有重新整理間隔,快取僅僅呼叫語句時重新整理。 

size(引用數目)可以被設定為任意正整數,要記住你快取的物件數目和你執行環境的可用記憶體資源數目。預設值是1024. 

readonly(唯讀)屬性可以被設定為true或false。唯讀的快取會給所有呼叫者返回快取物件的相同例項,因此這些物件不能被修改,這提供了很重要的效能優勢。可讀寫的快取會返回快取物件的拷貝(通過發序列化)。這會慢一些,但是安全,因此預設是false。

我們系統為了提高系統併發,效能、一般對系統進行分布式部署(集群部署方式) 

不使用分布快取,快取的資料在各各服務單獨儲存,不方便系統開發。所以要使用分布式快取對快取資料進行集中管理。

mybatis無法實現分布式快取,需要和其它分布式快取框架進行整合。這裡我主要介紹整合ehcache。下面開始例項。

專案結構如下: 

測試類如下:

package cn.pwc

.test

;import org.apache

.ibatis

.session

.sqlsession

;import org.apache

.ibatis

.session

.sqlsessionfactory

;import org.apache

.ibatis

.session

.sqlsessionfactorybuilder

;import cn.pwc

.dao

;import cn.pwc

.pojo

.user

;public class test

}

測試結果如下:

debug [cn%002epwc%002edao%002e%0055

.ehcache

.store

.disk

.segment - fault removed 0 from heap

debug [cn%002epwc%002edao%002e%0055

.ehcache

.store

.disk

.segment - fault added 0 on disk

資料庫配置檔案

實體對映檔案

jar包圖

目錄結構

Mybatis的二級快取配置

所有這些屬性都可以通過快取元素的屬性來修改,比如 eviction fifo flushinterval 10800000 size 512 readonly true 這個更高階的配置建立了乙個fifo快取,並每隔3個小時重新整理快取,儲存結 果物件或列表的512個引用,而且返回的物件被認為是唯讀...

mybatis二級快取

配置檔案 不用配置也是預設開啟的 在sqlmapconfig.xml中 cacheenabled value true 如果不需要二級快取,可以在設定禁用二級快取 select 這樣每次都是從資料庫中讀取 在執行insert,update,delete後會重新整理快取 清空快取 可以設定不重新整理 ...

mybatis 二級快取

一 mybatis 二級快取 3 mybatis 預設二級快取未開啟 內建是支援二級快取的。但是由於本身是資料庫管理元件 所以快取並不好用 所以還是要用第三方的快取機制。典型的 ehcache 二 二級快取的常見演算法 lru least recently used 這種演算法是在每個物件中維護乙個...