zoukankan      html  css  js  c++  java
  • Hibernate与MyBatis缓存

    1. Hibernate与Mybatis的一级缓存与二级缓存
    
       Mybatis的一级缓存:
    		sqlSession级别的缓存,操作数据库时需要构造sqlSession对象,对象中有一个数据结构(Hashmap)用于存储缓存数据。
    		不同的sqlSession对象互不影响。Mybatis默认开启一级缓存
       Mybatis的二级缓存:
    		Mapper级别的缓存,多个sqlSession共用一个Mapper,多个sqlSession操作数据库会将数据存储在二级缓存,并且可以共用二级缓存,
    		作用域是同一个mapper的namespace的。Mybatis的二级缓存默认是不开启的,需要在配置文件中开启。
    		
    		
       Hibernate的一级缓存:
    		又叫Session缓存,Session是内置的,不能被卸载,是事物范围的缓存,是由Hibernate维护的,用户一般不能操作缓存内容。
    		如果想操作缓存内容,必须通过hibernate提供的evict/clear方法操作。在一级缓存中,持久化的每个实例都有唯一的OID.
       Hibernate的二级缓存:
    		又叫SessionFactory缓存。基于应用程序级别的缓存,作用在SessionFactory范围内。可以跨多个Session
    		SessionFactory的生命周期与应用程序的整个过程对应,所以Hibernate的二级缓存是进程范围或者集群范围的缓存。
                    SessionFactory的生命周期与应用程序的整个过程对应,所以Hibernate的二级缓存是进程范围或者集群范围的缓存。
    		有可能出现并发问题,因此要采用适当的并发访问策略。Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架,默认下SessionFactory不会启用这个插件。
    		
    2. 总结:
    	
    	Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。
    	而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。
    	Hibernate的优势是DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。Hibernate的数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
    	Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。
    		    
    

      

  • 相关阅读:
    Java高并发24-使用自定义锁生成一个消费模型
    Java高并发连载23-基于AQS实现自定义同步器
    JavaScript连载38-编写评论界面
    Java高并发22-AQS条件变量的支持
    Java高并发21-AQS在共享,独占场景下的源码介绍
    SSH 集成Shiro和EhCache,设置登录超时时间无效解决办法。
    Vue3.0 + Echarts 实现地区人口数量分布展示
    从零开始学VUE之网络模块(Axios)
    从零开始学VUE之VueX(modules)
    从零开始学VUE之VueX(actions)
  • 原文地址:https://www.cnblogs.com/rain-in-summer/p/13890071.html
Copyright © 2011-2022 走看看