我想在我的hibernate项目中使用二级缓存,但我只知道一些关于hibernate二级缓存的问题,任何人都可以解释我在我的代码中使用这个问题以及我需要什么配置和.jar文件? 我将这些设置设置为我的hibernate.cfg.xml文件

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

并添加这些jar文件 ehcache-1.6.1.jar,ehcache-1.6.1-javadoc.jar,ehcache-1.6.1-sources.jar 我想知道我改变任何其他配置吗?

如何理解我的项目使用二级缓存?

如果只是把这个设置,hibernate自动使用这个,或者我必须在我的.java类中使用ant其他代码(比如任何注释或其他东西)

有帮助吗?

解决方案

您正在寻找的注释是 org.hibernate.annotations.Cache 。基本用法是:

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

对于查询,您需要通过将 hibernate.cache.use_query_cache 属性设置为true来启用查询缓存并指定该查询在其声明中可缓存(对于命名查询)或通过调用 setCacheable(true)在查询实例上。

所有这一切,你需要非常小心缓存和真正理解你在做什么,否则它会带来更多的伤害而不是帮助。不要将其视为“快速修复”。例如,缓存所有内容肯定是错误的事情。

其他提示

您的设置将使第二级和查询缓存可用于您的项目,但您仍需要为特定实体,集合和查询启用它。这需要一些仔细的计划,因为您需要进行权衡取舍。通常,第二级和查询高速缓存适用于只读或大部分读取数据,但不适用于易失性数据。如果您还没有拥有它,我建议您选择 Java Persistence with Hibernate 的副本。它对这个主题有很好的处理。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top