2017-01-04 6 views
1

테이블을 업데이트하는 jdbc 업데이트 쿼리가 있습니다. 엔티티 캐시는 최대 절전 모드에서 동일한 테이블에 대해 유지 관리됩니다. jdbc 쿼리에 의해 업데이트되는 엔티티의 캐시 영역을 새로 고치려면 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 쿼리와 영역 제거 사이에 캐시의 데이터가 일관성을 잃을 수 있습니다.