Hibernate和Mybatis的区别(6大核心区别详解)

Hibernate和Mybatis的区别(6大核心区别详解)-mikechen

Hibernate与MySQL区别是经常被面试问到的话题,下面重点详解Hibernate与MySQL的6大区别。

开发速度对比

Hibernate的学习成本要比MyBatis高,MyBatis框架相对容易上手。

比如:

一个项目中用到最基本的增删改查,这样选择Hibernate的效率就要高些了,因为基本的SQL语句已经被封装好,可以节省大量时间。

但是对于一个大型项目复杂的查询语句较多,使用MyBatis就会加快很多,而且SQL语句管理也会很方便。

 

优劣势对比

Hibernate 优势

  1. Hibernate的DAO层开发比MyBatis简单,MyBatis 需要维护 SQL 和结果映射;
  2. Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL;
  3. Hibernate 有更好的二级缓存机制,可以使用第三方缓存,MyBatis 本身提供的缓存机制不佳;

 

MyBatis优势

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

 

SQL优化对比

Hibernate不需要编写大量的 SQL就可以完全映射,此外还提供 HQL(Hibernate Query Language)对 POJO 进行操作,查询时会查询所有字段,会有不必要的性能消耗。

MyBatis手动编写 SQL,所以调整方便,是针对响应的场景设计的 SQL,更灵活、 可控性更好、 更优化,特别适合很多大型网站需要上线检查SQL语句的场景。

 

可移植性对比

Hibernate

  • 与具体数据库的关联只需在 XML 文件中配置即可;
  • 所有的 HQL 语句与具体使用的数据库无关, 移植性很好;

MyBatis

  • 所有的 SQL 语句都是依赖所用的数据库的;
  • 所以不同数据库类型的支持不好;

 

开发方面对比

MyBatis 是一个半自动映射的框架,因为 MyBatis 需要手动匹配 POJO、SQL 和映射关系;

Hibernate 是一个全表映射的框架,只需提供 POJO 和映射关系即可;

 

使用场景对比

Hibernate适用于中小企业需求变化不多的项目, 比如后台管理系统, erp、 orm、oa,其它条件满足,看团队大多数人员的倾向使用;

MyBatis:适合数据量大(千万级),高并发的场景,表关联复杂度比较大,SQL需要优化的场景,项目要求对于数据库可控性好, 可深度调优;

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法