spring - 如何在 Spring Data JPA CRUDRepository 中添加缓存功能

标签 spring hibernate caching jpa jdbc

我想在 findOne 方法中添加“Cacheable”注解,并在 delete 或发生方法发生时驱逐缓存。

我该怎么做?

最佳答案

virsir,如果您使用 Spring Data JPA(仅使用接口(interface)),还有另一种方法。这是我所做的,用于类似结构化实体的通用 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);
}

关于spring - 如何在 Spring Data JPA CRUDRepository 中添加缓存功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13914480/

相关文章:

javascript - react-query:仅在状态变量更改时重新获取查询

java - 从 Spring 异常处理程序中读取 httprequest 内容

java - 基于事件和一组标准构建 Spring 状态机

java - 无法连接到 tomcat 上的 MySQL,但它使用 hibernate 作为独立的 java 类连接

java - Hibernate - 分组两个实体

java - 使用Ehcache时出现ClosedChannelException异常

java - Hibernate缓存更新机制

spring - 为什么使用Spring而不是JSF(Spring相对于JSF的优点)?

java - Spring 数据 MongoDB : how to partially map domain object to MongoDB?

java - eclipse 警告 : Type safety (Java Generics)