当前位置 博文首页 > 梦想007的博客:hibernate缓存机制浅谈
一、一级缓存
一级缓存只能存在于同一个session:
session的evict方法清除缓存,只会清除单个对象
session的clear方法清楚缓存中的所有对象。
二、二级缓存:
1.开启二级缓存:
<property name="cache.use_second_level_cache">true</property>
2.配置二级缓存的提供者
<property name="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</property>
3.指定使用的类
使用哪个类,哪个类的映射文件里面就要加一个<cache usage="read-only"/>属性。usage属性一般改为transactional。
两个不同的session可以使用二级缓存
factory的evict(Dep.class)和
evictEntity("com.pojo.Dep")
可以清空二级缓存。
缓存可以提高效率,但是并不是所有的数据都能用二级缓存。
敏感的数据,经常操作的数据,多个应用操作的表不使用二级缓存。
三、查询缓存:
前提是配置好二级缓存 ,查询缓存只给hql语句使用
查询缓存只能够hql语言用
1.使用查询缓存前提是开启二级缓存。
2.配置代码<property name="cache.use_query_cache">true</property>
3.代码设置query.setCacheable(true)
不同的session可以共用查询缓存
查询缓存以hql作为键,查询语句作为值。
如果hql语句相同,则查询语句相同且只有一句,反之查询语句不同,有多句。
?
cs