zoukankan      html  css  js  c++  java
  • 管理Hibernate的缓存

      

    1. 什么是缓存?

    介于应用程序和硬盘之间的临时存储空间——称为缓存;使用缓存可以明显提升应用程序性能(降低磁盘访问的次数)。

     磁盘的访问次数愈多,相对的程序的性能就越低...

    缓存可以理解为内存中一块特殊的存储区域。

     

    2. 为什么需要使用缓存(优缺点)?

    2.1 优点:提升应用程序性能(N倍增加)。

    2.2 缺点:消耗大量的内存空间;经常发生变化的数据,不适合使用缓存(更新数据时,需要更新缓存+物理磁盘数据)。

     

    3. Hibernate中缓存的分类?

    Hibernate提供两种缓存的使用:一级缓存(Session)、二级缓存(SessionFactory)。

    一级缓存Hibernate默认使用(必须使用);

    二级缓存可选。

    常见的二级缓存:EHCache、OSCacheSwramCache JBossCache缓存。

     

    4. 如何使用缓存?

    一级缓存(Session缓存)——默认缓存。

    Session对象在查询数据时,先到缓存中检测是否存在该数据。

    (有:直接获取;没有:到数据库中查询,将数据存放在session缓存中)

    缓存清除两种情况:1. 手动清除缓存。  2. 关闭Session。

    清除缓存:session.evict(对象名);

     

    二级缓存(SessionFactory缓存)——外部插件(EHCache)。

    原理:查询的数据,会自动存放在SessionFactory中,只要SessionFactory不关闭,数据始终存在。(Session每次获取数据时都会到二级缓冲中查找)。

     

    配置二级缓冲步骤:

    1. 导入EHCachejar包。

    2. 在hibernate.cfg.xml中配置二级缓冲(启用二级缓存)。

    记得在hibernate.cfg.xml文件中添加:

    <property name="show_sql">true</property>
     <property name="cache.use_query_cache">true</property>
     <property name="cache.use_second_level_cache">ture</property>
     <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>这几个属性!

    3. 在src目录下,添加一个配置文件(ehcache.xml)用来配置缓存的对象。

    4. 在xxxx.hbm.xml中添加<cache>标签用来表示是否缓存该对象。

     

    注意:HQL语句默认不会执行缓存查询;如果需要添加缓存查询功能:

    1. 在hibernate.cfg.xml中添加属性:cache.use_query_cache = true;

    2. 在Query对象中设置setCacheable(true).list();

     

    一般情况下,在单个类与set中添加缓存!

  • 相关阅读:
    3Dtouch 的实际应用详解(tableView中的应用)
    使用UIScrollView的zoomscale实现图片捏合放大
    SVN命令使用详解
    参数传递
    cookie文件路径
    XML和HTML之间的差异
    cssSelector元素定位方法
    如何调用一个数据完整的firefox浏览器
    Android生命周期详解
    android 利用countDownLatch实现主线程与子线程之间的同步
  • 原文地址:https://www.cnblogs.com/huzi007/p/2813748.html
Copyright © 2011-2022 走看看