4
내가 방법을 아래에 호출하여 2 레벨 캐시에서 캐시 데이터를 지우려면

:지우기 최대 절전 모드 2 차 레벨 캐시

sessionFactory.getCache().evictEntityRegions(); 
난 그냥 알고 싶어

,이 일에 어떤 해가? 예 : 트랜잭션 도중에 캐시를 지우려고하면 어떻게됩니까?

미리 감사드립니다.

답변

2

아니요, 그렇게하는 데 아무런 해가 없습니다. 효과적으로, 정의 된 퇴거/만료 정책에 따라 항목을 축출/만료하도록 캐시 공급자를 구성하면 동일한 문제가 발생합니다.

+0

안녕하세요, Dragan, 나는 데이터를 가져 오기 위해 일부 트랜잭션이 실행 중이고 2 단계 캐시에 데이터가있는 경우를 고려해야합니다. 동시에 이전 트랜잭션이 완료되지 않은 동안 다른 스레드가 모든 region 캐시를 제거합니다. 그러면이 경우에 어떻게 될 것입니다. 해당 트랜잭션에서 캐시에서 null을 얻을 수 있고 db 히트가 발생할 수 있습니까? 어떤 문제가있을 수 있습니까? –

+1

@VikasVats이 경우 객체는 이미 첫 번째 레벨 캐시 (세션)에 있으며 트랜잭션의 끝까지 거기에서 가져올 것입니다. 개체가 세션에서 수동으로 제거되거나 전체 세션이 수동으로 지워지면 개체가 db에서 다시로드되고 첫 번째 및 두 번째 수준 캐시에 저장됩니다. 그것에 대해 어떤 문제도 발생할 가능성이 없습니다. –