如何缓存不存在的实体

时间:2019-06-04 15:01:41

标签: hibernate jpa ehcache-3

我正在将hibernate 5.3.7与ehcache 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

1 个答案:

答案 0 :(得分:0)

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

这样,您还可以缓存Optional