0

我正在使用带有 ehcache 3.7 的休眠 5.3.7,我想缓存不存在的实体。

例子:

我尝试通过 id 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

4

1 回答 1

0

在这种情况下,您可能不应该缓存实体,而是缓存存储库方法的结果。

这样你也可以缓存 Optional

于 2019-06-04T15:11:49.133 回答