繁体   English   中英

Hibernate:是否可以手动将对象添加到二级缓存?

[英]Hibernate : Is it possible to manually add objects to second level cache?

在我的项目中,我想缓存几个对象,而不是整个表。 所以我的问题是,是否有可以用来手动添加对象以休眠第二级缓存的API? (或者是否可以为二级缓存指定表数据区域?)

您可以使用@Cacheable(true)注释要缓存的实体

@Cacheable(true)
@Entity
public class Person { ... }

然后在persistence.xml配置文件中,需要将shared-cache-mode元素设置为使用ENABLE_SELECTIVE

<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>

所以现在:

为所有实体启用了缓存,并为Cacheable(true)指定了缓存。 所有其他实体均未缓存。

要指定区域,可以使用特定于Hibernate的@Cache注释:

@Cacheable(true)
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE, region="your-entity-region")
@Entity
public class Person { ... }

现在,您必须启用二级缓存:

<prop key="hibernate.cache.use_second_level_cache">true</prop>
<property name="hibernate.cache.region.factory_class">ehcache</property>

要将实体添加到第二级缓存中,您只需加载实体(实体将被自动缓存):

Person person = entityManager.find(Person.class, 1L);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM