• 第四讲 Hibernate 缓存管理


    缓存原理?

    将一些重要的、核心数据加载到内存中,存放起来;当应用程序需要访问该数据时,直接从内存中获取该数据;(从内存中获取数据,而不是从磁盘上读取数据)

     

    Hibernate中的缓存管理:

    Hibernate中缓存分为:一级缓存(Session缓存)、二级缓存(SessionFactory缓存)。

    一级缓存(Session缓存)由Hibernate自带。

    特点:

    1. 必须使用。

    2. session关闭的时候,缓存自动清空。

    3. 手动清除缓存。(clear()——清除所有session中的缓存;evict(Object obj)——清除指定的对象; flush() —— 刷新缓存)

     

    二级缓存(SessionFactory缓存)Hibernate提供支持的接口(外部缓存库)。

    特点:

    1. 所有用户可以共享数据。(跟具体的session对象无关)

    2. 消耗更多的内存资源。

    3. 查询速度变快、修改时(增、删、改)需要维护缓存和数据库。

     

    如何使用二级缓存(步骤)(EHCache缓存):

    1. 修改hibernate.cfg.xml配置文件。(指定缓存插件、启动二级缓存功能)

     

    <property name="cache.provider_class">
            org.hibernate.cache.EhCacheProvider
    </property>
    <property name="cache.use_second_level_cache">true</property>

     

    1. 在src目录下,创建EHCache缓存的配置文件(ehcache.xml)。

     

    2. 在*.hbm.xml配置文件中,添加<cache usage="read-write"/>。

     

     

     

    注意:

    清除二级缓存中的对象:
    //清除所有类型
    HibernateSessionFactory.getSessionFactory().evict(Emp.class);
    
    //清除指定对象
    HibernateSessionFactory.getSessionFactory().evict(Emp.class, 1);
    
    //清除集合中的所有对象
    HibernateSessionFactory.getSessionFactory().evictCollection("com.zuxia.entity.Dept.emps");
    时间到达时,自动清除对象:
    <defaultCache maxElementsInMemory="500" eternal="false"
    timeToIdleSeconds="时间" timeToLiveSeconds="时间" overflowToDisk="true" />
    当时间到达时,自动清除对象;eternal="false"必须为false才有效。
    HQL语句默认不会执行缓存查询:
    <property name="cache.use_query_cache">true</property>
    查询时,调用Query中setCacheable(true)方法进行缓存查询。
    注意:根据HQL查询语句,缓存对象。(两条语句相同时,才能执行查询缓存)

     

  • 相关阅读:
    SQL SERVER 2008 SA禁用,Windows帐户被删
    SQL Server表结构修改脚本
    请教高手,如何取得Target属性
    Installing Reporting Services on Windows 7, Vista or Windows Server 2008 无权限(rsAccessDenied)解决方法
    请教:如何在子页面关闭时把焦点设置到父页面的服务器控件上?
    order by newid() sql随机查询
    JS干货,笔记大全
    破解XP密码
    直接连接*.mdf 文件 获取随机数据
    总结C#获取当前路径的7种方法(转)
  • 原文地址:https://www.cnblogs.com/lljj/p/Hibernate04.html
Copyright © 2020-2023  润新知