2010-01-07 3 views
3

JPQL 업데이트 또는 삭제 쿼리를 실행할 때 변경된 엔터티의 2 수준 캐시를 무효화 할만큼 충분히 Hibernate가 스마트 한 상태입니까?JPQL 업데이트 문을 실행할 때 Hibernate 2 단계 캐시가 무효화됩니까

인위적인 예 :

update Product p set p.status = 'S' where p.name like 'Monitor%' 

현재 그 문이 실행되는 2 레벨의 캐시에 제품이있는 경우, 캐시에서 모든 제품을 무효화 최대 절전 모드 또는 수행됩니다

당신은 JPQL이 그것은 캐시에 아무 것도하지 않고 2 차 레벨 캐시의 제품은 이제 유효하지 않습니까? 그냥 참고로 ... 난 내 자신의 테스트를 실행하고 단지 2 ~하지, 전체 두 번째 레벨 캐시를 무효화 것으로 나타나는 this bug에 걸쳐 실행 한 후 최대 절전 모드와 JBossCache

+0

흥미 롭습니다. showSql = true (또는 JPA를 사용하지 않을 경우, 콘솔에 sql 출력을 보여주기위한 hibernate 속성)을 확인하고 hibernate가 방금 hql로 업데이트 된 엔티티를 데이터베이스에서 다시 가져 오는 지 확인하십시오. – Bozho

+0

그건 그게 당신이 그것을 상상할 수없는 캐시에 그 항목을 다시로드하면 말해 줄 것입니다. 캐시가 무효화되어 해당 엔티티의 모든 인스턴스가 데이터베이스에서 다시로드되어야하는 경우가 있습니다. 나는 시험을하고 알아 내야 할 것 같아. 여기 누군가가 빠른 대답을 원하기를 바랬습니다. – larf311

답변

0

와 제이 보스 5.1을 사용하고

업데이트와 관련된 모든 엔티티에 대한 최상위 레벨 캐시.

관련 문제