【轉】如何回答面試中問到的Hibernate和MyBatis的區別

這邊主要是寫給那些準備去面試的(沒什麼經驗的)應聘者看的,爲了在面試中更好的回答這個問題,我作一個簡單的梳理和總結。面試

做爲一名職場新人,經歷過屢次的面試,因爲在簡歷中說起了Hibernate和MyBatis,因此常常被問到。這個問題你若是真的很懂,那就能夠說的很詳細,若是也只是用過一點點,那就只要說個大概就行。sql

總結以下:

提及Hibernate和MyBatis最大的區別,用很寬泛的話講就是hibernate是自動的,mybatis是半自動的。自動指的是hibernate由於有良好的映射機制,針對高級查詢,也能夠沒必要手動編寫sql,開發者能夠更關注於業務邏輯而不用擔憂sql的生成和結果映射。mybatis半自動指的是它在作高級查詢時,必須手動寫sql以及resultMap。因此說,mybatis比hibernate開發工做量大。數據庫

第二點就是在sql優化方面,hibernate默認是會把表中全部的列都查出來的,而mybatis是本身指定要查哪些列。固然,hibernate容許本身指定查什麼,可是就會破壞hibernate開發的簡潔性。因此mybatis在sql優化上仍是比hibernate靈活的。mybatis

第三點hibernate自帶日誌統計,而mybatis須要依靠log4j來實現優化

第四點hibernate強大的數據庫無關性,只需在xml文件中配置驅動和方言,就能夠實現和不一樣數據庫的交互。而mybatis的全部sql和所使用的數據庫有直接關係,一旦變動數據庫,那麼你的sql語句基本就是要修改了。hibernate

第五點隨便提一句,mybatis比hibernate更加適合開發複雜查詢的項目,且更容易上手,從第一點就能夠看出來。日誌

相關文章
相關標籤/搜索