mybatis自身緩存的弊
由于mybatis不是一個(gè)專門做緩存處理,現(xiàn)在有一個(gè)十分明顯的弊端就是蜒谤,一般我們的網(wǎng)頁(yè)就是分布式的發(fā)布山宾,也就是最少使用兩個(gè)服務(wù)器至扰,如果使用兩個(gè)服務(wù)器mybatis的緩存技術(shù)就無(wú)法在兩個(gè)服務(wù)器通用就是,也就是兩個(gè)服務(wù)器無(wú)法達(dá)到數(shù)據(jù)通用资锰,比如我在一個(gè)服務(wù)器存儲(chǔ)了我的信息敢课,但是我轉(zhuǎn)跳到另一個(gè)服務(wù)器那使用mybatis數(shù)據(jù)就是需要從新加載,這里就是一個(gè)非常大的問(wèn)題绷杜。還有就是mybatis無(wú)法實(shí)現(xiàn)細(xì)粒度的緩存管理直秆,當(dāng)你查詢大量數(shù)據(jù)的時(shí)候而且將數(shù)據(jù)存儲(chǔ)到mybatis二級(jí)緩存中的時(shí)候,但是一旦隊(duì)一個(gè)數(shù)據(jù)操作增加鞭盟,刪除圾结,修改,這里二級(jí)緩存就全部清空齿诉,而mybatis無(wú)法實(shí)現(xiàn)對(duì)這里單個(gè)信息的修改筝野,這里可以使用三級(jí)緩存,三級(jí)緩存需要自己實(shí)現(xiàn)粤剧。
mybatis與緩存框架整合
緩存框架這里使用ehcache作為例子歇竟,ehcache就是一個(gè)分布式框架。
mapper文件配置
? ? <!-- 開啟本mapper(namespace)的二級(jí)緩存
? ? ? type:指定cache接口的實(shí)現(xiàn)類型抵恋,mybatis默認(rèn)的是PerpetualCache
? ? ? 如果要和ehcache整合只需要配置type為ehacache的實(shí)現(xiàn)類即可
? ? ? -->
? ? ? <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>
這里只需要配置cache的type就可以焕议,這樣就可以將緩存數(shù)據(jù)交給ehcache管理。
ehcache配置文件
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
? xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
? updateCheck="false">
<!--diskStore:緩存數(shù)據(jù)持久化的目錄 地址? -->
<diskStore path="c:\temp\lhd"/>
<defaultCache
maxElementsInMemory="1000"
maxElementsOnDisk="10000000"
eternal="false"
overflowToDisk="false"
diskPersistent="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU">
</defaultCache>