【问题标题】:How to cache entities which do not exist如何缓存不存在的实体
【发布时间】:2019-06-04 15:01:41
【问题描述】:

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

例子:

我尝试通过 id 10 查找实体,如果它不存在,它应该返回 null/Optional.empty() 直到缓存被驱逐。

这样做的原因是我们将用户消息存储在数据库中,使用区域特定语言回退到父语言。

例子:

如果我请求语言 es_PA 的消息 button.accept 并且它不存在,我应该返回语言 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

【问题讨论】:

    标签: hibernate jpa ehcache-3


    【解决方案1】:

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

    这样你也可以缓存 Optional

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-15
      • 2010-11-26
      • 1970-01-01
      • 1970-01-01
      • 2016-04-27
      • 2018-03-07
      • 1970-01-01
      • 2011-03-24
      相关资源
      最近更新 更多