爲何國內不少互聯網公司不用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又掌握了多少呢?

 

相關文章
相關標籤/搜索