首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spring Boot + JPA2 + Hibernate -启用二级缓存

Spring Boot + JPA2 + Hibernate -启用二级缓存
EN

Stack Overflow用户
提问于 2015-07-23 19:12:39
回答 4查看 69.4K关注 0票数 47

我使用Spring Boot1.2.5和JPA2来注释实体( hibernate作为底层的JPA实现)。

我希望在该设置中使用二级缓存,因此使用@javax.persistence.Cacheable注释实体

我还在application.properties中添加了以下内容:

代码语言:javascript
复制
spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.use_query_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory

在启动期间,hibernate抱怨缺少EhCacheRegionFactory,所以我还在pom中添加了以下内容:

代码语言:javascript
复制
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
</dependency>

但是,像entityManager.find(Clazz.class, pk)这样的查询仍然触发了DB查询,而不是使用缓存数据。

你知道少了什么吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-23 22:36:26

经过进一步的挖掘,我在application.properties中遗漏了以下内容

代码语言:javascript
复制
spring.jpa.properties.javax.persistence.sharedCache.mode=ALL

希望对某些人有帮助:)

票数 38
EN

Stack Overflow用户

发布于 2018-02-20 00:46:27

你有没有添加

代码语言:javascript
复制
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_ONLY) 

在你想要缓存的类上?

票数 2
EN

Stack Overflow用户

发布于 2015-07-23 21:07:23

您的类路径中应该有一个ehcache.xml文件。该文件应至少包含默认缓存策略。为了更容易调试,请确保实体不会从缓存中逐出:

ehcache.xml:

代码语言:javascript
复制
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:noNamespaceSchemaLocation="ehcache.xsd"
  Name="CacheManager" 
  maxBytesLocalHeap="250m">

<defaultCache eternal="true"
...
/>

<cache name="org.hibernate.cache.internal.StandardQueryCache"
       eternal="true"
...
/>

为了确保一切正常,您应该在应用程序启动期间记录以下日志:

代码语言:javascript
复制
Could not find a specific ehcache configuration for cache named [com.yourcompany.YourClass]; Using defaults.

这意味着您的实体缓存注释已被正确读取,并将使用默认缓存。

如果您使用entityManager.find(Clazz.class, pk)进行测试,则不会将查询缓存包含在内,而只是将实体缓存包含在内。查询缓存用于查询(em.createQuery(...)对于关系船来说

另外,我使用org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory,,但我不知道哪个更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31585698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档