Hibernate二级缓存<< net.sf.ehcache.hibernate.EhCacheProvider >>

Am1*_*3zA 4 caching hibernate ehcache hibernate.cfg.xml second-level-cache

我想在我的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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

Chs*_*y76 5

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

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

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

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

所有这一切,你需要非常小心缓存并真正理解你正在做的事情,否则它会带来更多的伤害而不是帮助.不要将其视为"快速修复" - 例如,缓存所有内容绝对是错误的做法.