Spring Boot Cache批量和单独访问

时间:2019-02-25 17:14:01

标签: spring-boot spring-cache

重复访问单个实体的数据库比进行批量选择要慢得多。如何将批量选择的结果缓存到缓存中,以后再单独访问它?

例如,我有一个Employee实体:

public class Employee {
  private Integer id;
}

我有一个可以通过批量选择或按ID分别访问它的存储库:

public class EmployeeRepository {
  public Map<Integer, Employee> retrieveByEmployeeIds(List<Integer> ids) {
    // impl
  }
  public Employee retrieveByEmployeeId(Integer id) {
    // impl
  }
}

如何实现它,以便在调用retrieveByEmployeeId(Integer id)时将检查与retrieveByEmployeeIds(List<Integer> ids)相同的缓存,如果不存在,它将调用数据库,并且再次使用ID存储该缓存?

1 个答案:

答案 0 :(得分:1)

我之前已经回答过类似的问题,例如,见(Spring Cache with collection of items/entities)。

本质上,您必须实现自定义CacheManagerCache,这两个基本接口构成了 Spring的缓存抽象的基础,如here所述。它甚至可以扩展或委托给现有的缓存提供程序,但是您必须“修饰”现有的功能。

我上面提到的链接也包含示例。

希望这有助于您了解如何处理特定的UC。