2015-01-13 90 views
1

我有個問題。我有一個應用程序,我從數據庫中獲取數據(使用休眠)。我希望:每個用戶在白天只從數據庫下載一次數據。所以我想緩存從數據庫中得到的結果。我使用Hibernate的Spring框架,我知道他們都有一些緩存的可能性。但是,我不知道它們之間有什麼區別,什麼是更好的選擇。威爾感謝答案。休眠緩存和Spring遠程緩存有什麼區別?

回答

2

Hibernate有2級緩存。 1. First level 2. Second level

Second level chache適用於整個應用程序,first level cache適用於當前的hibernate會話。有每個用戶可用的no cache

另外如果你使用spring managed beans + caching。有一項規定可以緩存整個應用程序的Bean而不是用戶。 (對此不太確定)

這聽起來就是你想要在user's session中存儲數據。即,只要用戶正在進行活動會話。 Spring有一個session scoped beans您可能想要使用它們來緩存每個用戶的數據。

3

從我的角度來看,從Hibernate緩存開始是一個更謹慎的決定,尤其是因爲兩者不排斥對方。在性能方面,Spring緩存可以爲您提供更多,更高的堆棧空間,您可以緩存業務結果(基本上比使用hibernate的二級緩存更能緩存)。

但是,一個突出的區別是清除緩存。有了Spring緩存,你需要明確地清除,而如果你的插入,更新和刪除操作通過hibernate的框架,hibernate緩存會自動維護。

在我參與的項目中,假設使用hibernate的二級緩存,這幾乎是默認的。我們使用Spring緩存來處理更加靜態的數據。