相同點:都是持久層的框架,都用於dao層的開發。
不一樣點:
1. hibernate對sql語句作了封裝,使用HQL語句操做數據庫。數據庫無關性支持好,在項目須要支持多種數據庫的狀況下,代碼開發量少,sql語句性能優化困難。
mybatis使用sql語句操做數據庫,不支持數據庫無關性,在項目須要支持多種數據庫的狀況下,代碼開發量相對較多。sql語句性能優化容易。
2. hibernate配置java對象,與數據庫表的對應關係,多表的關聯關係查詢配置複雜。mybatis配置java對象,與sql語句執行結果的對應關係,多表的關聯關係查詢配置簡單。java
Mybatis優點sql
MyBatis能夠進行更爲細緻的SQL優化,能夠減小查詢字段。數據庫
MyBatis容易掌握,而Hibernate門檻較高。緩存
MyBatis更加靈活,動態編寫sql語句,提供xml標籤,支持編寫動態sql,解除sql與程序代碼的耦合,容易上手方便後續開發團隊的運維,適合需求變化頻繁,大型項目,好比:互聯網項目。性能優化
小巧、方便、高效、學習簡單、半自動、移植性很差mybatis
Hibernate優點框架
Hibernate的DAO層開發比MyBatis簡單,Mybatis須要維護SQL和結果映射。Hibernate對對象的維護和緩存要比MyBatis好,對增刪改查的對象的維護要方便。Hibernate數據庫移植性很好,MyBatis的數據庫移植性很差,不一樣的數據庫須要寫不一樣SQL。Hibernate有更好的二級緩存機制,能夠使用第三方緩存。MyBatis自己提供的緩存機制不佳。適合需求穩定的中小型項目,好比:辦公自動化系統,財務系統。運維
強大、方便、高效、學習複雜、全自動、移植性好性能