浅析Mybatis和Hibernate的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangchengming1/article/details/81976413

这两种ORM框架笔者都用过,但是个人更加倾向于Mybatis。接下来我将从多个方面来对比一下Mybatis和Hibernate的优缺点。

  • 关于原理

    • 两者都是基于对象关系映射 (Object Relational Mapping ,简称ORM)的思想来完成Entity(实体)和DB之间的依赖关系。
    • 两者都支持JDBC。
    • 两者都是通过SqlSessionFactoryBuilder由XML配置文件生成SqlSessionFactoryBean,由SqlSessionFactoryBean生成SqlSession,由SqlSession来开启执行事务和SQL语句。
  • 数据库移植性

    • Mybatis所有的SQL都是由开发人员手写的,是必须依赖数据库的,所以在移植性和可扩展性比较差。
    • Hibernate数据库和Entity的映射关系都在XML中(或者注解中),所以HQL对具体是用什么数据库并不是很关心,所以移植性比较好。
  • 上手速度和开发速度

    • Hibernate的真正掌握要比Mybatis困难,学习成本很高。
    • Hibernate比Mybatis更加重量级一些,因为有很多数据库和实体之间的XML映射关系。
    • Mybatis框架相对简单很容易上手,但也相对简陋些,因为没有Hibernate那么完善,比如在日志系统方面。毕竟SQL需要程序人员进行手动编写。
    • 因为Mybatis的SQL都需要开发人员手动编写,所以可能开发速度没有Hibernate那么快,但是Hibernate开发速度快也是站立在对Hibernate很熟练的前提下。
  • SQL优化方面

    • 很明显,在这个方面Mybatis的又是要比Hibernate大得多,因为Mybatis的SQL都是直接写在XML里的,可以很直观的看到,并针对问题点进行优化。
    • Hibernate的SQL都是自动生成的,在维护和调优方面很麻烦。虽然Hibernate也可以自己写SQL语句来指定需要查询的字段,但这样破坏了Hibernate封装以及简洁性,并不是很推荐这么做。
    • 总之在写SQL的灵活度上Hibernate远不及Mybatis。
  • 总结

    • MyBatis可以进行更为细致的SQL优化,可以减少查询字段。而且MyBatis容易掌握,上手速度很快,只要会写SQL就基本没什么大问题。
    • Hibernate的学习成本高,上手速度较慢,需要开发法人员比较熟悉怎么设计O/R映射。但是Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,那么推荐使用Hibernate。

猜你喜欢

转载自blog.csdn.net/wangchengming1/article/details/81976413