当前位置 博文首页 > 梦想007的博客:hibernate缓存机制浅谈

    梦想007的博客:hibernate缓存机制浅谈

    作者:[db:作者] 时间:2021-09-18 10:00

    一、一级缓存

    一级缓存只能存在于同一个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
    下一篇:没有了