2011-09-27 110 views

回答

3

MyBatis中的緩存非常簡單。每文檔

默認情況下(用戶手冊http://mybatis.googlecode.com/svn/trunk/doc/en/MyBatis-3-User-Guide.pdf的第42頁),也沒有啓用緩存的,除了局部的session緩存,從而提高性能和需要解決循環依賴。要啓用緩存的第二個層次,你只需要一個行添加到您的SQL映射文件: 的MyBatis 3 - 用戶指南 2011年6月6日43

<cache/> 

字面上看就是這樣。

常見的陷阱,我有,而這樣做:

在您添加緩存元素映射器;如果您有依賴實體,請確保在需要時顯式清空緩存。儘管在插入,更新和刪除已設置緩存元素的映射中的元素時已經爲您執行了刷新,但由於在不同的xml映射中定義了更新/刪除/ etc,有時您必須刷新緩存。基本上,當你考慮你的緩存時,你應該問自己:「當這個實體改變時,我是否希望它爲另一個映射中的實體刷新緩存?」如果答案是肯定的,請使用cache-ref元素而不僅僅是緩存。

防爆從文檔的第45頁:

<cache-ref namespace=」com.someone.application.data.SomeMapper」/> 
+0

是的,但是這是一個無狀態的web服務,而不是一個MVC應用程序。我沒有會話。 – aks

+1

MyBatis中的緩存全部在內部完成;不管您決定投入什麼樣的環境。所以只要您遵循「範圍和生命週期」部分(第10頁)中的指導原則,就無需擔心;緩存應該可以正常工作。所以使用SqlSessionFactoryBuilder來創建一個SqlSessionFactory。確保你的SqlSessionFactory實例是一個單例,並用它爲每個請求創建一個新的SqlSession。 – Dave