zoukankan      html  css  js  c++  java
  • Mybatis和Hibernate框架的区别

    Mybatis和Hibernate框架的区别
    1 简单简介
      1.1 Hibernate 框架
        Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,建立对象与数据库表的映射。
        是一个全自动的、完全面向对象的持久层框架。
      1.2 Mybatis框架
        Mybatis是一个开源对象关系映射框架,原名:ibatis,2010年由谷歌接管以后更名。是一个半自动化的持久层框架。
    2 两者区别
      2.1 开发方面
        在项目开发过程当中,就速度而言:
          hibernate开发中,sql语句已经被封装,直接可以使用,加快系统开发;
          Mybatis 属于半自动化,sql需要手工完成,稍微繁琐;
        但是,凡事都不是绝对的,如果对于庞大复杂的系统项目来说,发杂语句较多,选择hibernate 就不是一个好方案。
      2.2 sql优化方面
        Hibernate 自动生成sql,有些语句较为繁琐,会多消耗一些性能;
        Mybatis 手动编写sql,可以避免不需要的查询,提高系统性能;
      2.3 对象管理比对
        Hibernate 是完整的对象-关系映射的框架,开发工程中,无需过多关注底层实现,只要去管理对象即可;
        Mybatis 需要自行管理 映射关系;
      2.4 缓存方面


    相同点:

      Hibernate和Mybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,
      创建适配器来完全覆盖缓存行为。

    不同点:

      Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。

      MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。
      并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。

    比较:

      Hibernate 具有良好的管理机制,用户不需要关注SQL,如果二级缓存出现脏数据,系统会保存,;
      Mybatis 在使用的时候要谨慎,避免缓存CAche 的使用。

    Hibernate优势
      Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。

      Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。

      Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。

      Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

    Mybatis优势
      MyBatis可以进行更为细致的SQL优化,可以减少查询字段。

      MyBatis容易掌握,而Hibernate门槛较高。

    一句话总结
      Mybatis:小巧、方便、高效、简单、直接、半自动化

      Hibernate:强大、方便、高效、复杂、间接、全自动化

  • 相关阅读:
    2016"百度之星"
    codeforces 55 div2 C.Title 模拟
    codeforces 98 div2 C.History 水题
    codeforces 97 div2 C.Replacement 水题
    codeforces 200 div2 C. Rational Resistance 思路题
    bzoj 2226 LCMSum 欧拉函数
    hdu 1163 九余数定理
    51nod 1225 余数的和 数学
    bzoj 2818 gcd 线性欧拉函数
    Codeforces Round #332 (Div. 2)D. Spongebob and Squares 数学
  • 原文地址:https://www.cnblogs.com/Zzzzn/p/11732220.html
Copyright © 2011-2022 走看看