[SPRING] 스프링 데이터 JPA CRUDRepository에 캐시 기능을 추가하는 방법
SPRING스프링 데이터 JPA CRUDRepository에 캐시 기능을 추가하는 방법
findOne 메소드에 "Cacheable"주석을 추가하고 삭제 또는 발생 된 메소드가 발생할 때 캐시를 제거하려고합니다.
어떻게해야합니까?
해결법
-
==============================
1.virsir, Spring Data JPA (단지 인터페이스 사용)를 사용하면 또 다른 방법이 있습니다. 여기 비슷한 구조의 개체에 대한 genereic dao :
virsir, Spring Data JPA (단지 인터페이스 사용)를 사용하면 또 다른 방법이 있습니다. 여기 비슷한 구조의 개체에 대한 genereic dao :
public interface CachingDao<T, ID extends Serializable> extends JpaRepository<T, ID>, JpaSpecificationExecutor<T> { @Cacheable(value = "myCache") T findOne(ID id); @Cacheable(value = "myCache") List<T> findAll(); @Cacheable(value = "myCache") Page<T> findAll(Pageable pageable); .... @CacheEvict(value = "myCache", allEntries = true) <S extends T> S save(S entity); .... @CacheEvict(value = "myCache", allEntries = true) void delete(ID id); }
-
==============================
2.기본적으로 @ 7의 대답은 정확하지만 2 개의 누락 점이 있다고 생각합니다.
기본적으로 @ 7의 대답은 정확하지만 2 개의 누락 점이 있다고 생각합니다.
참고
-
==============================
3.나는 다음과 같은 방식으로이 문제를 해결했다.
나는 다음과 같은 방식으로이 문제를 해결했다.
public interface BookRepositoryCustom { Book findOne(Long id); }
public class BookRepositoryImpl extends SimpleJpaRepository<Book,Long> implements BookRepositoryCustom { @Inject public BookRepositoryImpl(EntityManager entityManager) { super(Book.class, entityManager); } @Cacheable(value = "books", key = "#id") public Book findOne(Long id) { return super.findOne(id); } }
public interface BookRepository extends JpaRepository<Book,Long>, BookRepositoryCustom { }
-
==============================
4.모든 리포지토리에 사용자 지정 동작 추가하기에서 설명한대로 MyCRUDRepository (인터페이스 및 구현)를 제공하십시오. 그런 다음 이러한 메소드에 대한 주석을 재정의하고 추가 할 수 있습니다.
모든 리포지토리에 사용자 지정 동작 추가하기에서 설명한대로 MyCRUDRepository (인터페이스 및 구현)를 제공하십시오. 그런 다음 이러한 메소드에 대한 주석을 재정의하고 추가 할 수 있습니다.
findOne(ID id) delete(T entity) delete(Iterable<? extends T> entities) deleteAll() delete(ID id)
from https://stackoverflow.com/questions/13914480/how-to-add-cache-feature-in-spring-data-jpa-crudrepository by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 왜 Spring은 @DependsOn 주석을 무시 했습니까? (0) | 2019.03.26 |
---|---|
[SPRING] @PersistenceContext Spring 및 Java EE의 EntityManager 스레드 안전성 (0) | 2019.03.26 |
[SPRING] 봄 @Async 무시 (0) | 2019.03.26 |
[SPRING] 스프링 빈에서는 트랜잭션을 사용할 수있는 시스템 종료 방법을 사용할 수 있습니까? (0) | 2019.03.26 |
[SPRING] 내 Angular + Spring 응용 프로그램 라우팅은 TomCat에 배포 할 때 작동하지 않습니다. (0) | 2019.03.26 |