4

我想通過調用下面的方法來清除二級緩存緩存數據:清除Hibernate的二級緩存

sessionFactory.getCache().evictEntityRegions(); 

我只是想知道,有沒有做什麼害處嗎?例如:如果我嘗試在事務中間清除緩存會發生什麼情況?

在此先感謝。

回答

2

不,這樣做並沒有什麼壞處。實際上,當您將緩存提供程序配置爲基於定義的逐出/過期策略來逐出/過期項目時,會發生同樣的情況。

+0

嗨Dragan,我有一個case.Suppose如果一些事務正在運行,以獲得數據和二級緩存有數據在那個時候。與此同時,另一個線程在上一個事務尚未完成的同時驅逐所有區域高速緩存。那麼在這種情況下會發生什麼。我可以從該事務中的緩存中獲取null,並且會發生數據庫命中?有什麼問題嗎? –

+1

@VikasVats在這種情況下,對象已經在第一級緩存(會話)中,並且在事務結束時將從那裏獲取對象。如果從會話中手動清除對象或手動清除整個會話,則該對象將從db重新加載並存儲在第一級和第二級高速緩存中。關於這個問題沒有任何問題。 –