2011-08-29 108 views
4

如何強制讀取數據庫數據(在讀取之前不驅逐二級緩存),然後將其放入緩存。如何刷新二級緩存?

用例如下:

有一種服務,它使用字典數據。服務體驗高負載,所以性能是必須的。 我希望字典數據在服務的二級緩存中始終可用。 字典數據可以進行外部修改,因此緩存需要定期刷新。

是否有可能以'SessionFactory'的其他客戶端不會導致數據庫命中的方式'刷新'二級緩存(在更新數據被讀取時會得到舊項目)。

ehcache用作緩存提供程序,但可以進行合理更改。

+0

你是如何去實現CacheMode.REFRESH?你有沒有在會話中設置它,Hibernate會自動更新? –

+0

@JoseChavez我已經完成:session.setCacheMode(CacheMode.REFRESH),然後通過Hibernate發出請求,以便在該會話中刷新數據。 https://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/Session.html#setCacheMode(org.hibernate.CacheMode) – Andrey

回答

4

現在又一次,爲了讀取數據庫,您可以將會話上的CacheMode設置爲REFRESH - 將從數據庫中爲該客戶端獲取數據,並將任何更新添加到第二方客戶端中,級緩存。其他使用普通緩存模式查詢的客戶端將從二級緩存中讀取數據,而不會觸及數據庫。

CacheMode

+0

謝謝!不知道我怎麼沒有自己找到。 – Andrey