Массовая загрузка и доступ к Spring Boot Cache - PullRequest
0 голосов
/ 25 февраля 2019

Повторный доступ к БД для отдельных объектов намного медленнее, чем массовый выбор.Как мне кэшировать результат массового выбора в кэш, а затем обращаться к нему по отдельности?

Например, у меня есть объект 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), и если он нене существует, он будет вызывать БД, а также снова хранить этот кэш с идентификатором?

1 Ответ

0 голосов
/ 26 февраля 2019

Я уже отвечал на подобные вопросы, например, см. ( Spring Cache с коллекцией элементов / сущностей ).

По сути, вы должны реализовать пользовательскую CacheManager и Cache, 2 основных интерфейса, которые составляют основу Spring Cache Abstraction , как описано здесь .Он может даже расширяться или делегироваться существующему поставщику кэширования, но вы должны «украсить» существующую функциональность.

Ссылка, на которую я ссылался выше, также содержит примеры.

Надеюсь, что это поможет вам дать идеио том, как обращаться с вашим конкретным UC.

...