2012-04-08 39 views
3

我有一個Hibernate +的Ehcache + Spring MVC的Web應用程序是建立在一個非常標準的方式:如何在每個請求的基礎上使用/不使用緩存?

控制器 - >服務類 - > DAO類 - > DB

的應用程序是一個REST API,它響應到XML的HTTP GET請求。一切都按預期工作。數據庫只在需要時才被擊中 - 否則結果來自Ehcache。

我想要的是在每個請求的基礎上使用/不使用緩存。當然,我希望默認行爲是使用緩存,但是當傳入「nocache = 1」參數時,不應該使用緩存,而應該讀取數據庫。

我開始着手爲我的服務類方法添加一個「useCache」參數,然後添加到DAO類,但這並不合適。有沒有更好/更好的方法來做到這一點?也許使用某種類型的servlet過濾器?

+0

+1,你如何配置你的緩存?休眠? '@ Cacheable'? – 2012-04-08 19:18:26

+0

我用@Cache註解了我的POJO類(用法= ...)。我還在我的ehcache.xml文件中指定了緩存名稱。 ' – Thomas 2012-04-08 22:13:01

回答

0

這是一個想法,但我不確定它是否正確。

寫2種方法,一種是query.setCacheable(true);,另一種是正常的。現在,當你可以根據你的需要使用這些方法時,也就是說,當你需要緩存或者你不需要的時候。

這裏是關於查詢緩存的article

+0

這就是(幾乎)正是我開始走下去的路線,但不喜歡緩存的東西污染我的代碼的方式。我覺得我的服務類中的業務方法不應該「知道」緩存,所以我停下了腳步。仍然想知道是否有AOP或過濾方式來實現我想要的... – Thomas 2012-04-10 02:11:25

相關問題