Hibernate与MySQL区别是经常被面试问到的话题,下面重点详解Hibernate与MySQL的6大区别。
开发速度对比
Hibernate的学习成本要比MyBatis高,MyBatis框架相对容易上手。
比如:
一个项目中用到最基本的增删改查,这样选择Hibernate的效率就要高些了,因为基本的SQL语句已经被封装好,可以节省大量时间。
但是对于一个大型项目复杂的查询语句较多,使用MyBatis就会加快很多,而且SQL语句管理也会很方便。
优劣势对比
Hibernate 优势
- Hibernate的DAO层开发比MyBatis简单,MyBatis 需要维护 SQL 和结果映射;
- Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL;
- Hibernate 有更好的二级缓存机制,可以使用第三方缓存,MyBatis 本身提供的缓存机制不佳;
MyBatis优势
- MyBatis 可以进行更为细致的 SQL 优化,可以减少查询字段;
- 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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》