2011-03-04 82 views
3

這是一個關於Hibernate Caching的基本問題,但在繼續之前我必須確定。我曾在小項目中使用過query緩存,但現在我參與了一個大項目,所以這是:何時使用Hibernate緩存(第二級)?

在真正的大項目中(國家)您對何時使用Query Hibernate中的緩存有何建議?

:*該平臺是Struts2的,Spring3,休眠的Java6 WAS6 *

回答

1

我想你的意思是二級緩存,這是高速緩存跨越一個以上的Hibernate會話。

通常,查詢緩存用於重度查詢或經常訪問的查詢,以使您的應用程序降低訪問頻率。

我不確定你的問題是否包含實體緩存,但你絕對應該調查它。該緩存包括單獨的實體或其集合,而不管上下文(即具體查詢)。我會說這是最有利的緩存類型。

您的TPS或實體數量越大,您將從使用此類緩存中受益越多。當你遇到每個事務有幾千個查詢時,從緩存中取出實體(通常在RAM中)而不是查詢數據庫和映射可以節省大量的寶貴時間。

當您需要100%最新(在線)結果時請小心。

參見:

Improving Performance在Hibernate的文檔。

1

二級緩存被使用,當你的數據庫關係複雜,因爲在這種情況下,你知道每次打db都會是一個代價高昂的操作。在這種情況下,可以通過使用緩存來提高應用的性能。

1

我強烈推薦文章truly understanding the second level and query caches。一般而言,緩存有很多好處,但也會帶來很多複雜性,您應該有一個很好的緩存理由,並瞭解它會給您帶來哪些好處/風險。

請注意,打開查詢緩存本身不夠,您需要將事物標記爲可緩存,here is an explanation。這篇文章非常好,並討論了查詢緩存何時無用。再次,確保您在應用程序中啓用查詢緩存的好理由。

相關問題