[英]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.