2017-01-04 9 views
1

テーブルを更新するjdbc更新クエリがあります。エンティティキャッシュは、休止状態の同じテーブルに対して維持されます。 jdbcクエリによって更新されるエンティティのキ​​ャッシュ領域をリフレッシュするようにhibernateに指示する必要があります。hibernateの第2レベルのキャッシュに対するjdbcクエリの影響は何ですか?特定のキャッシュ領域に対してキャッシュリフレッシュを起動できますか?

+0

これはあなたに役立つはずです[2番目のレベルのキャッシュがデータベースの最新のデータで更新されるようにする方法](http://stackoverflow.com/questions/30413321/how-hibernate-ensures-second-level-cache-is-updated - 最新のデータ・イン・データベース) – Tomz

答えて

2

あなたはこれがキャッシュから古いエントリを削除し

sessionFactory.getCache().evictEntityRegion(MyEntity.class) 

を探しています。ただし、JDBCの更新前にこの無効化とJDBC更新の間のウィンドウで行うと、同時読み取りでキャッシュに再度データを取り込むことができるため、アプリケーションがすべてのDBアクセスを停止しないと、一部の古いエントリ。

更新後に別の領域を削除すると、それを並べ替えることができますが、JDBCクエリと領域削除の間で、キャッシュ内のデータが矛盾する可能性があります。

関連する問題