zoukankan      html  css  js  c++  java
  • hibernate一级缓存、二级缓存

         hibernate缓存是指为了降低应用程序对物理数据源访问的次数,从而提高应用程序的运行性能的一种策略。并不是指计算机内存或者cpu的一二级缓存。 ORM框架访问数据库的效率直接影响应用程序的运行速度,提升和优化orm框架的执行效率至关重要。hibernate缓存是提升和优化hibernate执行效率的重要手段。

        一级缓存代码总结

         1,同一个session两次查询同一个对象,只输出一个sql语句,证明默认使用缓存了;

         2,在不同的session中多次查询同一个对象,会执行多次数据库查询;

         3,在一级缓存中,每一个相同的对象都具有唯一的OID;一级缓存又叫session级缓存,或者会话级的缓存。生命周期等同session;

         4,一级缓存是默认开启的,并且无法取消。管理一级缓存可以通过session.evict(obj),session.clear()方法清除一个或全部对象;

         5,query.list()方法和query.iterator()方法不会使用一级缓存,但是iterator方法得到对象ID后,得到对象的其他属性会首先使用一级缓存,得到对象ID不使用一级缓存,是向数据库发送的sql语句。

        二级缓存配置总结:

        1,二级缓存要用到commons-logging-1**.jar和ehcache.jar,ehcache.xml配置文件放在项目路径下;

        2,hibernate.cfg.xml中,指定二级缓存的外部实现类,要配置

    <property name="cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>
    

        3,哪个实体类要用到二级缓存,就在它的配置文件的class标签中添加<cache usage="read-only"/>,使该类的二级缓存生效,注解需再查找,cache标签还有另外的2个属性include等;

        4,二级缓存又称为全局缓存,应用级缓存。适用范围是当前应用的所有会话。二级缓存是可插播式缓存,默认是EHChache,还支持其他二级缓存组件,如Hashtable、OSChache等;

        5,二级缓存存放很少被修改的数据,不是很重要,允许偶尔并发,不会频繁并发的参考数据。

        总结对比:(使用慕课网的一张图片,可参考慕课网相关视频)

       

  • 相关阅读:
    HashMap(HashSet)的实现
    C/C++ 安全编码 —— 指针与内存
    AlexNet神经网络结构
    查看,修改动态组成员/通讯组
    刷新已禁用用户邮箱状态
    监控DAG状态
    AD诊断命令
    PowerShell管理Exchange
    TCP连接(Time_Wait、Close_Wait)说明
    IIS配置(安装IIS、.Net、更改IIS Log目录位置)
  • 原文地址:https://www.cnblogs.com/sunqian/p/5427589.html
Copyright © 2011-2022 走看看