MyBatis与Hibernate对比

Hibernate:是一个标准ORM框架(对象关系映射)。入门门槛较高的,不需要程序写sql,sql语句自动生成了。对sql语句进行优化、修改比较困难的。

应用场景:适用与需求变化不多的中小型项目,比如:后台管理系统,erp、orm、oa。

 

MyBatis:专注是sql本身,需要程序员自己编写sql语句,sql修改、优化比较方便。MyBatis是一个不完全的ORM框架,虽然程序员自己写sql,MyBatis也可以实现映射(输入映射、输出映射)。

应用场景:适用与需求变化较多的项目,比如:互联网项目。

企业进行技术选型,以低成本高回报作为技术选型的原则,根据项目组的技术力量进行选择。


1 映射关系


     Mybatis:实体类与sql之间的映射(Sql Mapping)

     Hibernate:实体类与数据库之间映射(O/R Mapping)


2 两者相同点


  • Hibernate与MyBatis都可以是通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuider,SessionFactory,Session的生命周期都是差不多的。
  • Hibernate和MyBatis都支持JDBC和JTA事务处理。


2.1Mybatis优势


  • MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
  • MyBatis容易掌握,而Hibernate门槛较高。


2.2Hibernate优势


  • Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
  • Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
  • Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
  • Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。


3 他人总结


  • Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。 
  • Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。 
  • iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。 
  • iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。


4  推荐博客


        《mybatis与hibernate区别》、《Hibernate与MyBatis的比较》


5  一句话总结


       MyBatis:小巧、方便、高效、简单、直接、半自动

       Hibernate:强大、方便、高效、复杂、绕弯子、全自动

你可能感兴趣的:(Java)