我想在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 我想知道我是否需要更改其他配置?
ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar
我怎么知道我的项目使用二级缓存?
如果只是设置此设置,hibernate将自动使用此设置,否则我必须在我的.java类中使用其他代码(例如任何注释或其他内容)
您要查找的注释是org.hibernate.annotations.Cache。基本用法是:
@Entity @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public MyEntity { ... @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public List<ElementType> getSomeCollection() { ... } }
对于查询,您需要通过将属性设置为true 来启用查询缓存,hibernate.cache.use_query_cache并指定查询在其声明中可缓存(对于命名查询)或通过调用setCacheable(true)查询实例来启用。
hibernate.cache.use_query_cache
setCacheable(true)
综上所述,您需要非常小心缓存并 真正了解 自己在做什么,否则弊大于利。不要将其视为“快速修复”,例如,缓存所有内容 绝对 是错误的选择。