天天看點

mybatis學習教程中級(十)mybatis和ehcache緩存架構整合(重點) 1、前言 2、配置ehcache 2、二級緩存應用場景

前面講解了mybatis的一級、二級緩存。一級然并卵(spring整合後),二級還是有用的。我們現在來看看用ehcache來維護管理二級緩存。不要問我為什麼,因為都這麼用!!!java是架構語言,人家給你買個了車車,你硬是要自己寫個賽跑的車,你認為呢(精神可嘉)??

我們要先有個态度,前面我們已經有了mybatis的緩存的設定,知道其實質就是用map把資料存起來,這TM就是緩存。是以這些第三方架構也就是做了同樣的事情,因為他們更專業。

2.1配置ehcache.xml

把檔案放置到resource下面

2.2 配置具體的mapper

到具體的mapper.xml,就這樣簡單,就這麼任性。我加入的是userMapper.xml。

如果你希望你本地mapper與全局的sqlconfig不一樣的的時候,你已經可以設定緩存

2.3 測試二級緩存

依舊用以前測試 ,開啟兩個sqlsession

測試二級緩存結果:看到0.5了吧,親愛的小夥伴!!!

mybatis學習教程中級(十)mybatis和ehcache緩存架構整合(重點) 1、前言 2、配置ehcache 2、二級緩存應用場景

       name:緩存名稱。

       maxElementsInMemory:緩存最大個數。

       eternal:對象是否永久有效,一但設定了,timeout将不起作用。

       timeToIdleSeconds:設定對象在失效前的允許閑置時間(機關:秒)。僅當eternal=false對象不是永久有效時使用,可選屬性,預設值是0,也就是可閑置時間無窮大。

       timeToLiveSeconds:設定對象在失效前允許存活時間(機關:秒)。最大時間介于建立時間和失效時間之間。僅當eternal=false對象不是永久有效時使用,預設是0.,也就是對象存活時間無窮大。

       overflowToDisk:當記憶體中對象數量達到maxElementsInMemory時,Ehcache将會對象寫到磁盤中。

       diskSpoolBufferSizeMB:這個參數設定DiskStore(磁盤緩存)的緩存區大小。預設是30MB。每個Cache都應該有自己的一個緩沖區。

       maxElementsOnDisk:硬碟最大緩存個數。

       diskPersistent:是否緩存虛拟機重新開機期資料 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.

       diskExpiryThreadIntervalSeconds:磁盤失效線程運作時間間隔,預設是120秒。

       memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache将會根據指定的政策去清理記憶體。預設政策是LRU(最近最少使用)。你可以設定為FIFO(先進先出)或是LFU(較少使用)。

       clearOnFlush:記憶體數量最大時是否清除。

  适用性:對查詢頻率高,變化頻率低的資料建議使用二級緩存。例如我們的賬單資訊查詢

局限性:mybatis二級緩存對細粒度的資料級别的緩存實作不好,例如我們的商品資訊,廣告資訊,實時在更新。而二級緩存是針對mapper的,如果order裡面更新 

  了,那麼裡面關于order的緩存就清空了哦。