1.打开二级缓存
<property name="cache.use_second_level_cache">true</property> <!-- 设置使用二级缓存为true --><property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <!-- 设置一个二级缓存的提供商 --> 使用EhCacheProvider必须再加一个ehcache.xml配置文件。 这个配置文件有一些特别的属性需要解释一下: <defaultCache maxElementsInMemory="10000" <!-- 最大可以放多少对象 --> eternal="false" <!-- 对象能否释放 --> timeToIdleSeconds="120" <!-- 闲置多久之后清除未使用的对象 --> timeToLiveSeconds="120" <!-- 存活多少时间后清除对象 --> overflowToDisk="true" <!-- 溢出的时候能不能放到硬盘上 --> /> 之后在需要放到二级缓存中的类头上加@Cache(CacheConcurrencyStrategy usage(); (1) String region() default ""; (2) String include() default "all"; (3) )
2.二级缓存使用的范围
经常被访问,数据量不大,很少被修高
3.load,iterate默认使用二级缓存,list默认往二级缓存里加数据,但查询的时候不使用
4.查询缓存(三级缓存)就是相同查询的时候用到的缓存
打开:<property name="cache.use_query_cache">true</property>
调用的时候session.createQuery("xxxxxxxxx").setCacheable(true)
5.缓存算法(缓存满了之后的处理方法)
1)LRU --> Least Recently Used 未被使用时间最长的
2)LFU --> Least Frequently Used 用到频率最小的
3)FIFO --> First In First Out
使用时在对应的cache.xml文件中,在你使用的cache配置下加一个属性,memoryStoreEvictionPolicy='LRU'