Mybatis和 Hibernate 區別?

最近面試遇到一個問題,面試官問大家項目使用 mybatis 仍是 hibernate?我說固然使用如今主流的 mybatis 了。面試官繼續問:爲何不使用 hibernate?說下緣由,以及這兩個框架的區別?......面試

最後我雖然是回答出來了面試官的問題,可是仍是感受到回答到的不夠完善?本身想下?問什麼呢?主流?難道你們都在用我也跟着你們用?緣由是什麼?要一探究竟了。sql

本菜鳥簡單理解以爲兩個框架區別以下:數據庫

第一點區別:hibernate 有完整良好的映射機制不用本身手動寫 sql,開發者不用擔憂本身 sql 生成只須要專一本身的業務邏輯便可。mybatis在作查詢時候須要本身手寫 sql 和 resultMap,簡單來講 mybatis 開發量比較大一點,但 mybatis 比 hibernate 更適合複雜查詢的項目。mybatis

從開發速度上來區分說,若是項目複雜查詢較少,就是簡單的查詢這樣使用 hibernate 開發速度較快,由於簡單的 sql 語句已經幫你封裝好了。可是若是大型項目,複雜語句較多,這樣使用 mybatis 開發就會快不少,並且對 sql 語句的管理來講也比較方便。框架

第二點區別:hibernate 進行查詢時候會把全部字段都查詢出來,查詢性能有必定消耗。mybatis 能夠指定查詢的字段,在 sql 優化方面是比較靈活的。性能

第三點區別:hibernate自帶日誌功能,mybatis 須要 log4j 來實現。學習

第四點區別:hibernate 配置數據庫鏈接時候自須要配置數據庫驅動和數據方言,便可和數據庫完成鏈接進行數據交互。mybatis 全部 sql 都和數據庫有關係,若是完成數據庫遷移就很麻煩了。優化

因此:hibernate 適合需求變化很少的中小型項目。傳統項目等 oa.....spa

           mybatis 適合需求變化較多的項目。互聯網項目等....hibernate

綜上所述就是以上簡單的幾個小區別。先總結到這裏之後學習中會繼續補充。

 

水平有限,如有問題請留言交流!

互相學習,共同進步 :)轉載請註明出處謝謝!

相關文章
相關標籤/搜索