• 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,二级缓存存放很少被修改的数据,不是很重要,允许偶尔并发,不会频繁并发的参考数据。

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

       

  • 相关阅读:
    软件的分解-编程语言自带分解功能
    面向接口编程定义了软件的生长方式
    软件开发的分:分离、分解、分类
    软件开发的分离之术-软件易变性的应对之道
    软件的本质
    软件开发的核心问题-三次转换
    没有银弹-软件工程中的根本和次要问题
    软件复杂性的通俗理解
    软件的复杂性与构造定律
    软件复杂性
  • 原文地址:https://www.cnblogs.com/sunqian/p/5427589.html
Copyright © 2020-2023  润新知