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本身提供的缓存机制不佳。
    		    
    

      

  • 相关阅读:
    img的srcset和sizes属性作用
    屏幕尺寸,分辨率,像素,PPI之间到底什么关系
    img 的 srcset、sizes 属性和 picture 元素
    收房细则
    购买雅居乐湖居笔记不得不知。
    Andoird Studio 错误: 非法字符: 'ufeff' 解决方案。
    解决mysql 1040错误Too many connections的方法
    Android布局优化之include、merge、ViewStub的使用
    美国人、英国人、中国人一生都是如何度过
    Android常用正则工具类
  • 原文地址:https://www.cnblogs.com/rain-in-summer/p/13890071.html
Copyright © 2011-2022 走看看