2013-10-04 87 views
1

因此,我有一個使用Spring框架和JDBCtemplate的Java EE應用程序。而且,我的應用程序必須在同一個數據庫(這是一個Postgres數據庫,但由於一系列原因而未規範化),但使用不同的sql語句(不同的where子句)上執行多個JDBC數據庫讀取請求(無/很少寫入)。所以,鑑於這種情況,我希望能夠緩存數據庫並能夠在緩存上運行查詢,從而爲我節省昂貴的JDBC調用。因此,請建議適當的工具或框架或任何其他解決方案。使用Spring進行數據庫緩存並能夠查詢它

回答

0

您可以從使用簡單的地圖開始,具體取決於您正在使用的查詢參數。更可行的解決方案是使用ehcache。

+0

我在我的數據庫中有幾個參數,我需要一起查詢,所以簡單的地圖是不夠的。我確實看過EHCache,但並不完全確定它是否完全符合我的需求。如果有人有經驗,請告訴我它是否適合我。 –

+0

很多企業使用ehcache。所以如果你有任何疑問,你是否可以安全地使用它;放心,這是非常好的。我自己成功地在更大的應用程序中使用了ehcache和ehcache web。去吧。 ehcache網站有很多您可以使用的信息。 – pravat

0

如果使用Spring 3.1或更高版本,則可以在方法上使用@Cacheable。您需要在應用程序上下文配置中包含<cache:annotation-driven />。對於簡單的情況,你可以使用Spring的ConcurrentCacheFactoryBean作爲緩存管理器。對於更復雜的情況,您可以通過spring的ehcache適配器使用ehcache。使用@CacheEvict來重置緩存。

+0

我不是100%確定,但它看起來像@Cacheable是用於緩存方法返回,即如果方法被調用相同的參數,那麼它是有道理的,所以返回相同的早期緩存結果。但在我的情況下,我不希望我的DAO函數被調用相同的參數,事實上,他們很可能會每次調用不同的不同參數(導致不同的sql查詢需要被觸發),因此緩存方法沒有意義。 –

+0

我認爲數據庫緩存很有意義,因此如果系統能夠在此緩存數據庫上使用不同的查詢語句進行查詢,則應用程序的性能會得到改善。 –

+0

如果對@ someMethod(String someArg)使用@Cacheable,someArg值將成爲緩存中的鍵。它不需要每次都有相同的參數。如果您傳遞了之前傳遞的參數,方法將從緩存中返回值。 – androberz

相關問題