Spring 引导缓存批量和单独访问



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

例如,我有一个员工实体:

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 存储该缓存?

我之前回答过类似的问题,例如参见(带有项目/实体集合的 Spring 缓存)。

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

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

希望这有助于为您提供有关如何处理特定UC的想法。

最新更新