2017-10-19 7 views
-1

DB의 모든 객체를 반환하는 findAll 메소드가 있으며 캐시되어 있습니다. 하지만 일부 개체를 업데이트 할 때 해당 요소를 캐시에서 업데이트하려고합니다. 그러나 findall은에 내가 키를 매핑하는 방법을 알고하지 않습니다findAll 메소드에서 캐시에서 특정 객체를 제거하는 방법은 무엇입니까?

@Cacheable("findAllStudens") 
public Collection<StudensImpl> findAll() 

것은 내가하지만, 해당 요소에 대한 캐시를 업데이트 할 학생을 업데이트 할 때. 누군가 동일한 문제가 있습니까?

답변

0

이 같은, 당신의 업데이트 방법에 주석 @CachePut을 사용해야합니다

@CachePut(cacheNames = "findAllStudens") 
public void update(StudensImpl studensImpl) { 
... 
} 
+0

이렇게하면 캐시에서 해당 객체 만 업데이트하는 방법입니까? –

0

당신이

CacheEvict 주석 삭제됩니다 업데이트 방법 전에 @CacheEvict ("findAllStudens") 주석을 추가 할 필요가 기존 캐시의 데이터 그리고 다음에 findAll()을 호출하면 메서드 내의 코드가 실행되고 반환 된 목록이 캐시에 저장됩니다.

+0

예,하지만이 전체 findAllStudens 캐시를 삭제합니까? –

+0

나는 그것을 사용하지 못했지만 @CachePut이 일을하고있는 것 같다 (Felipe 대답) http://websystique.com/spring/spring-4-cacheable-cache-cacheconfig-enablecaching-tutorial/ –

+0

@ cachePut은 키가 메소드의 이름이고 값이 새로운 객체이므로 캐시를 새 값으로 다시 작성합니다. –