항목 컬렉션에서 캐시하는 방법에는 다음과 같은 방법업데이트/제거 항목은 이미 내가 봄으로 Ehcache</p> <p>함께 일하고
@Override
@Cacheable(value="products", key="#root.target.PRODUCTS")
public Set<Product> findAll() {
return new LinkedHashSet<>(this.productRepository.findAll());
}
나는 @Cacheable과 @CachePut 작업 다른 방법이 @CacheEvict.
지금, 데이터베이스 (100 개) 제품을 반환하고 그들이 key="#root.target.PRODUCTS"
을 통해 캐시 상상, 그 다음 다른 방법은 삽입 것 - 갱신 - 데이터베이스에에게 항목을 삭제. 따라서 key="#root.target.PRODUCTS"
을 통해 캐시 된 제품은 데이터베이스와 같이 더 이상 동일하지 않습니다.
는 내 말은, 그들은/업데이트 항목을 삭제 할 수 있습니다, 두 다음 두 가지 방법을 확인하고 그 동일한 항목 다른 key="#root.target.PRODUCTS"
@Override
@CachePut(value="products", key="#product.id")
public Product update(Product product) {
return this.productRepository.save(product);
}
@Override
@CacheEvict(value="products", key="#id")
public void delete(Integer id) {
this.productRepository.delete(id);
}
가능하면 내가 알고 싶은에 캐시됩니다 캐시에있는 항목을 key="#root.target.PRODUCTS"
을 통해 업데이트/삭제하면 업데이트 된 제품은 100이고, 제품이 삭제 된 경우는 499가됩니다.
@Override
@CachePut(value="products", key="#product.id")
@CacheEvict(value="products", key="#root.target.PRODUCTS")
public Product update(Product product) {
return this.productRepository.save(product);
}
@Override
@Caching(evict={
@CacheEvict(value="products", key="#id"),
@CacheEvict(value="products", key="#root.target.PRODUCTS")
})
public void delete(Integer id) {
this.productRepository.delete(id);
}
나는 key="#root.target.PRODUCTS"
에 캐시 다시 500 개 또는 499 제품 호출하지 않을 수 있나요 이렇게 :
내 요점은 다음과 같은 피하려면, 무엇입니까? 방법?
미리 감사드립니다.
감사합니다. Stephane, 나는 JIRA를 통해 대화를 나눌 것입니다. –