mybatis和hibernate比较

mybatis和hibernate比较

1.开发速度对比

  • 首先,hebirnate比mybatis掌握起来较难,mybatis相对简单但是也相对简陋。对于一些只使用简单的增删改查,而很少复杂查询的项目,使用hibernate开发比较快,因为其已经封装好了sql语句。但是对于复杂查询较多的项目,就需要使用mybatis来开发较为合适。

2.开发工作量

  • 两者都有相应的代码生成器,可以生成简单的dao层代码。但是对于高级查询,mybatis需要手动编写sql语句,并且需要写resultMap,但是hibernate有完整的映射机制,开发人员不需要关心sql的生成和结果映射。

3.sql优化方面

  • hibernate会将表中所有字段查询出来,会损耗一定的性能。虽然hibernate也可以自己写sql语句,但是破坏了hibernate开发的简洁性。而mybatis手动编写sql,可以指定查找的字段。
  • Hibernate HQL语句的调优需要将SQL打印出来,而Hibernate的SQL被很多人嫌弃因为太丑了。。MyBatis的SQL是自己手动写的所以调整方便。但Hibernate具有自己的日志统计。Mybatis本身不带日志统计,使用Log4j进行日志记录。

4.数据库移植性

  • hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(Oracle、MySQL等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。
    5.缓存
  • MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
  • 而Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。

参考https://cloud.tencent.com/developer/article/1478393

posted @ 2023-03-02 10:44  一个苦逼的23届毕业生  阅读(26)  评论(0编辑  收藏  举报