1.Hibernate中的缓存
HIbernate中的缓存可以分为三种
a.一级缓存(session):默认生效
b.二级缓存(sessionFactory):通过配置生效
配置方式:
1.1Ehcache缓存Hibernate3中的配置
a.在src目录下设置缓存配置文件ehcache.xml
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
</ehcache> |
b.需要导入ehcache的jar包
ehcache-core-2.4.3.jar 、hibernate-ehcache-4.2.21.Final.jar
c.在hibernate.cfg.xml中开启二级缓存
<property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property> |
1.2Ehcache缓存在HIbernate4配置
a.在src目录下设置缓存配置文件ehcache.xml
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
</ehcache> |
b.导入ehcache的jar包
ehcache-core-2.4.3.jar、hibernate-ehcache-4.2.21.Final.jar
c.在hibernate.cfg,xml中开启二级缓存
<property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property> |
d.在实体类上添加注解
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE) public class Server { private Integer sid; private String serverName; |
2.查询缓存(query)通过编码生效
在使用hql语句进行查询的时候,缓存是不生效的,如果要使用缓存必须使用查询缓存
query缓存设置:
a,在hibernate.cfg.xml中开启query缓存
<!-- 开启query缓存 --> <property name="hibernate.cache.use_query_cache">true</property> |
b.在编码代码生成query对象后
//设置query缓存 query.setCacheable(true); |