Mybatis与Hibernate对比,MyBatis优势,Hibernate优势

MyBatis与Hibernate的对比(各自优势)

通过了解以及深入学习总结了MyBatis与hibernate的区别(对比)本文将从一下几个方面讲解一下两者的区别:(有理解不到位的地方希望大家指出)

  1. 简介
    hibernate是之前相当流行的ORM框架之一,对于JDBC提供了比较完成整的封装。它的O/R Mapping实现了POJO和数据库表之间的映射,以及sql语句的自动生成和执行。
    MyBatis是现在非常流行的ORM框架,主要体现在POJO与SQL语句之间的映射关系。然后通过映射配置文件(mapper.xml)将sql所需要的参数,以及返回结果字段映射到制定的POJO。相对于Hibernate而言,MyBatis是一种SQL Mapper的ORM实现
  2. 开发速度
    Hibernate的真正掌握要比MyBatis困难,Hibernate相对于MyBatis而言更加重量级一些,但二者都是轻量级框架。
    MyBatis相对而言比较简单,学习成本比较低,容易上手,对sql优化比较方便(个人觉得这些也是它当前比较流行的原因)
  3. 开发工作量
    MyBatis需要我们手动编写sql语句,回归到最原始的方式,所以可以按照需求进行制定字段的查询,提高查询效率。
    hibernate通过编写Hql语句来操作sql,虽然Hibernate也可以写原生的sql语句,但是这种方式破坏了hibernate的风筝以及简洁性。
  4. 数据库可移植性
    MyBatis是书写sql语句的,所以当数据库发生改变时,sql语句需要对应改写。
    hibernate是运用hql语句(方言)来生成对应的sql语句,当数据库发生改变时,只需要更改xml文件中对应的数据库配置就可以。
  5. 缓存机制对比
    两者缓存机制的相同点
    Hibernate和MyBatis的二级缓存除了采用系统默认的缓存机制之外,都可以通过实现自己的缓存或者第三方缓存方案,创建适配器来完全覆盖缓存行为。
    两者缓存机制的不同点
    hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后在通过具体的对象-表映射的配置文件中配置应用哪种缓存。
    MyBatis的二级缓存都是配置在每一个对象-表映射中进行详细配置,这样针对不同的表可以有不同的缓存机制,并且MyBatis可以再命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
    二者缓存机制的对比
    因为hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示错误。而MyBatis在这一方面使用二级缓存时需要特别小心,如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用,否则脏数据讲给系统的正常运行带来很大的系统隐患。

总结

两者相同点:

Hibernate和MyBatis都可以通过SessionFactoryBuider由XML配置文件生成SessionFactory,再生成Session,最后由Session开启执行事务和sql。两者都支持JBDC和JTA事务处理。

Hibernate优势

· Hibernate的DAO层开发比Mybatis要简单,Mybatis需要维护sql语句。
·Hibernate对对象的维护和缓存要比MyBatis好,对增啥改成的对象维护比较方便。
·Hibernate数据库可以移植性比较好,MyBatis的可移植性比较差,不同的数据库需要编写不同的sql语句
·Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

MyBatis的优势

·MyBatis可以进行更为细致的sql优化减少查询字段。
·MyBatis容易掌握,入门比较迅速,学习成本低。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值