MyBatis二級緩存是基於namespace級別的緩存.
1.MyBatis的緩存機制整體設計以及二級緩存的工作模式
如上圖所示,當開一個會話時,一個SqlSession對象會使用一個Executor對象來完成會話操作,MyBatis的二級緩存機制的關鍵就是對這個Executor對象做文章。如果用戶配置了"cacheEnabled=true",那么MyBatis在為SqlSession對象創建Executor對象時,會對Executor對象加上一個裝飾者:CachingExecutor,這時SqlSession使用CachingExecutor對象來完成操作請求。CachingExecutor對於查詢請求,會先判斷該查詢請求在Application級別的二級緩存中是否有緩存結果,如果有查詢結果,則直接返回緩存結果;如果緩存中沒有,再交給真正的Executor對象來完成查詢操作,之后CachingExecutor會將真正Executor返回的查詢結果放置到緩存中,然后在返回給用戶。
2.二級緩存實現的選擇
1.MyBatis自身提供的緩存實現
<cache type="org.apache.ibatis.cache.impl.PerpetualCache"> </cache>
2.用戶自定義的cache接口
3.和第三方內存還存庫的集成
3.二級緩存自身實現和第三方集成的差別
自身實現只可作用與數據庫,而第三方集成的緩存擴展性更強.
4.ehcache的優點
1.它采用了分布式緩存,,兼具靈活性和擴展性.
2.標准分布式搜索使用了流式查詢接口的方式.
3.多種配置方式,自動資源控制
詳細信息:http://raychase.iteye.com/blog/1545906
5.MaBatis配置ehcache
(1).導包
導入:ehcache-core-2.6.5.jar 和mybatis-ehcache-1.0.2.jar 兩個包
(2).配置文件
ehcache-failsafe.xml
(3).在mapper映射文件cache標簽中設置type為Ehcashe的實現類為
(4).測試二級緩存
參考博客:http://blog.csdn.net/luanlouis/article/details/41408341
http://baijiahao.baidu.com/s?id=1575518563721435&wfr=spider&for=pc