为何国内不少互联网公司不用Hibernate,而去采用Mybatis框架?

为何国内不少互联网公司不用Hibernate,而去采用Mybatis框架?java

首先,咱们来简单看一下MyBatis的优点面试

 

MyBatis 是一款很是优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。不只避免了几乎全部的 JDBC 代码和手动设置参数以及获取结果集。还可使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs映射成数据库中的记录。spring

咱们在使用传统JDBC时,每每须要写不少JDBC代码,须要本身写SQL语句以及本身装配参数,而后本身对结果集进行封装处理。sql

Mybatis则帮咱们简化了以上功能,只须要一些配置文件(xml)或是注解的方式便可完成对数据库的查询以及结果的映射封装。数据库

为何MyBatis能在国内大厂里这么流行?并发

Mybatis之因此流行的一个缘由是上手快,当学完JDBC以后,再去学习Mybatis,上手时间要比Hibernate快。一个技术学习成本低,也是一个优点。app

另一个缘由就是sql优化上了,业务复杂的sql语句一般须要进行优化,此时操做Mybatis更加容易一些。框架

如今spring boot和Mybatis plus的出现,使Mybatis使用起来更加简单了。因此在大多数场景里,MyBatis更适合。学习

为何阿里巴巴的持久层抛弃Hibernate,采用MyBatis框架?优化

缘由大概有如下4点:

一、阿里在Mybatis上下了大功夫,他们对数据查询的要求也比较高,而Hibernate把数据库和你隔离了,若是使用Hibernate,虽然能对生成的查询进行必定程度的定制,但开发起来付出的代价更大。

二、对于阿里这种规模的网站服务,对cache的依赖是很是大的,对cache逻辑的要求很是高,并且必定要具体问题,具体优化。Hibernate自带的cache并不能知足像阿里这样的公司的需求。

三、Hibernate在你项目开始时候省事,可是会致使业务逻辑模型和数据库模型互相依赖的程度过高,一旦项目变迁,随便改一处数据库的schema,整个java项目可能要改几十处!而MyBatis的自动mapping作的也不差,开发起来也没多花多少时间。等项目进入中后期,你须要大量定制和优化查询的时候,MyBatis的开发效率就胜出了。=

四、不少地方Hibernate能够强大到只用一行代码解决不少问题,但好比说一个update()或者save()到底作了什么,这里既有Hibernate自己的逻辑,也有你应用的逻辑,若是这一行产生了问题,你该如何去作?而MyBatis的开发和调优更加方便简单。尤为是须要处理大量数据或者大并发状况的网站服务,这也阿里选择MyBatis的缘由。

 

大厂都在用MyBatis,跳槽的时候MyBatis更是面试必问的内容,那你对于MyBatis又掌握了多少呢?

 

相关文章
相关标签/搜索