4

私は法の下に呼び出すことにより、第2レベルのキャッシュからキャッシュデータをクリアしたい:私はちょうど知りたいをクリアHibernateの第2レベルのキャッシュ

sessionFactory.getCache().evictEntityRegions(); 

、これを行うことで害はありますか?たとえば、トランザクションの途中でキャッシュをクリアしようとするとどうなりますか?

ありがとうございます。

答えて

2

いいえ、そうすることに害はありません。実質的には、定義されたエビクション/有効期限ポリシーに基づいてアイテムをエビクト/期限切れにするようにキャッシュプロバイダを設定する場合も同じことが起こります。

+0

こんにちはDragan、私はケースを持っています。いくつかのトランザクションがデータを取得するために実行されている場合、第2レベルのキャッシュはその時点でデータを持っています。同時に、前のトランザクションがまだ完了していない間に、別のスレッドがすべての領域キャッシュを削除します。この場合、どうなるでしょう。そのトランザクションでキャッシュからヌルを取得し、dbヒットが発生することはありますか?問題が発生する可能性はありますか? –

+1

@VikasVatsこの場合、オブジェクトはすでに第1レベルのキャッシュ(セッション)にあり、トランザクションの終了時にそこからフェッチされます。オブジェクトが手動でセッションから追い出された場合、またはセッション全体が手動でクリアされた場合、オブジェクトはdbから再ロードされ、第1レベルおよび第2レベルのキャッシュに格納されます。それに関連する問題はありません。 –

関連する問題