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

      

  • 相关阅读:
    两种三维点云密度聚类方法的研究与对比
    C++ string和char char*的转换
    七大排序算法总结
    map下标操作和insert区别
    c++ map 使用自定义结构做关键字
    BagFromImage安装与使用
    安装ipython notebook
    c++基本知识
    Python爬虫第一集
    91. Decode Ways
  • 原文地址:https://www.cnblogs.com/rain-in-summer/p/13890071.html
Copyright © 2020-2023  润新知