Как кэшировать сущности, которые не существуют - PullRequest
0 голосов
/ 04 июня 2019

Я использую hibernate 5.3.7 с ehcache 3.7, и я хотел бы кэшировать сущности, которые не существуют.

Пример:

Я пытаюсь найти сущность по идентификатору 10, если она не существует, она должна возвращать null / Optional.empty () до тех пор, пока кеш не будет удален.

Причиной этого является то, что мы храним пользовательские сообщения в базе данных с языками, специфичными для региона, с обращением к родному языку.

Пример:

Если я запрашиваю сообщение button.accept для языка es_PA и оно не существует, я должен вернуть сообщение для языка es.

Таким образом, существует высокая вероятность получения запросов для сущностей, которые не существуют, но должны быть кэшированы.

Моя текущая конфигурация такая:

spring:
  jpa:
    properties:
      hibernate:
        cache:
          provider: org.ehcache.jsr107.EhcacheCachingProvider
          region:
            factory_class: jcache

И класс сущности помечается:

@Cacheable @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)

PS: я также использую Spring boot 2.1.3

1 Ответ

0 голосов
/ 04 июня 2019

В этом случае, возможно, вам следует кэшировать не сущности, а результат метода репозитория.

Таким образом, вы также можете кэшировать Необязательно

...