首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将实体标记为可缓存的

如何将实体标记为可缓存的
EN

Stack Overflow用户
提问于 2019-05-08 12:05:22
回答 2查看 1.3K关注 0票数 0

我有带有JPA实体、spring存储库和spring服务的java jar库,现在我在项目中包含了这个库,其中我希望一些实体可以缓存(缓存在二级缓存中),并且不想更改库。

可以将Cachemanager配置为包含非市场实体(如@Cacheable )。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 12:08:16

如果您对persistence.xml有控制权,则可以添加

代码语言:javascript
运行
复制
<shared-cache-mode>ALL</shared-cache-mode>

对于持久化单元缓存实体或

代码语言:javascript
运行
复制
<shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>

为除标记为@Cacheable(false)的实体之外的所有实体启用缓存(另请参见https://docs.oracle.com/javaee/7/api/javax/persistence/SharedCacheMode.html)

票数 1
EN

Stack Overflow用户

发布于 2019-05-08 12:41:47

如果您想使用Hibernate的与会话无关的二级缓存(可由多个Hibernate Session使用),则必须首先激活它。

首先修改persistence.xml,因此添加:

代码语言:javascript
运行
复制
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>

和财产:

代码语言:javascript
运行
复制
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>

您可以选择ALL缓存所有实体,NONE不缓存任何实体,ENABLE SELECTIVE选择将要缓存的实体,DISABLE SELECTIVE选择不缓存的实体。更喜欢ENABLE SELECTIVE,因为它要求您显式地决定哪些实体被缓存。

用JPA @Cacheable或Hibernate @Cache注释注释实体。

如果使用共享缓存模式( shared模式),还可以使用@Cacheable (false)注释将实体排除在缓存之外。

代码语言:javascript
运行
复制
Hibernate doesn't use the second-level cache with JPQL or criteria queries.

如果您想使用查询缓存修改persistence.xml,那么添加属性:

代码语言:javascript
运行
复制
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>

并使用setCacheable(boolean b);方法激活查询缓存,例如:

代码语言:javascript
运行
复制
Session s = (Session) em.getDelegate(); 
Query q = s.createQuery("SELECT b FROM Book b WHERE id = :id"); 
q.setParameter("id", 1L); 
q.setCacheable(true); 
Book b = q.uniqueResult();

Hibernate现在将此查询的结果存储在查询缓存中。当下一个用例执行此查询时,Hibernate检查查询缓存是否包含给定参数值的结果。如果缓存包含匹配的记录,Hibernate将从那里获得查询结果。否则,它将执行查询并将其结果存储在缓存中。

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

https://stackoverflow.com/questions/56040420

复制
相关文章

相似问题

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