Повторный доступ к БД для отдельных объектов намного медленнее, чем массовый выбор.Как мне кэшировать результат массового выбора в кэш, а затем обращаться к нему по отдельности?
Например, у меня есть объект Employee:
public class Employee {
private Integer 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)
, и если он нене существует, он будет вызывать БД, а также снова хранить этот кэш с идентификатором?