Весеннее кэширование Java, saveAll правильная обработка обновления - PullRequest
0 голосов
/ 15 мая 2019

Так что в настоящее время я пытаюсь кэшировать как можно больше БЕЗОПАСНО в моем приложении для весенней загрузки.

Будь я сталкиваюсь с мозговым скребком. Как мне обработать метод saveAll (список объектов)?

 public List<WorkaroundEntity> saveAll(List<WorkaroundEntity> workaroundEntities) {

Этот метод сохраняет все сущности, мой текущий кеш выглядит так:

  /**
    * K=WorkaroundEntity.id   --   Value=WorkaroundEntity
   */
   private static final String CACHE_NAME_WORKAROUNDS = "workarounds";

Так что в основном моя карта имеет идентификаторы и объекты. Когда пользователь сохраняет СПИСОК ВСЕХ ЛИЦ. С моей точки зрения у меня есть только эта опция:

@CacheEvict(value = CACHE_NAME_WORKAROUNDS, allEntries = true, condition = "#workaroundEntities.size()>=1")
public List<WorkaroundEntity> saveAll(List<WorkaroundEntity> workaroundEntities) {
    return workaroundEntityRepository.saveAll(workaroundEntities);
}

Я ошибаюсь, и есть ли лучшее решение для такого рода проблем?

Пока что я использую этот кеш в следующих методах:

public WorkaroundEntity save(WorkaroundEntity workaroundEntity)
public WorkaroundEntity findById(long id)
public void delete(WorkaroundEntity workaroundEntity) 
public WorkaroundEntity getOne(long id) 

Как вы обрабатываете методы, которые работают с коллекциями, а не с отдельными сущностями?

1 Ответ

0 голосов
/ 30 мая 2019

В конце концов, ответом для меня было совместное использование кэша 2-го уровня в спящем режиме и кэша Spring. Я получил лучшее от обоих слов.В дополнение к этому я создал дополнительные внутренние кеши для еще меньшего попадания в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...