一、 開發對比
1.從開發的重量對比,hibernate比mybatis重很多
2. hibernate有自動建數據庫表(包括表結構的更新等功能),開發過程中主要要關心業務邏輯,對數據表的生成修改,由hibernate底層完成;mybatis是能在數據庫中操作數據表,如果需要更新表結構,只能操作數據庫,不能用java代碼實現。
3.Hibernate數據庫移植性很好,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL。
4.hibernate與mybatis都可以根據工具生成相應的簡單的dao層。
二、 技術功能對比
1. hibernate開發社區與技術提供大於mybatis。
Hibernate 與Mybatis都是流行的持久層開發框架,但Hibernate開發社區相對多熱鬧些,支持的工具也多,更新也快,當前最高版本4.1.8。而Mybatis相對平靜,工具較少,當前最高版本3.2。
2. hibernate數據庫移植性遠大於mybatis。
hibernate通過它強大的映射結構和hql語言,大大降低了對象與數據庫(oracle、mysql等)的耦合性,而mybatis由於需要手寫sql,因此與數據庫的耦合性直接取決於程序員寫sql的方法,如果sql不具通用性而用了很多某數據庫特性的sql語句的話,移植性也會隨之降低很多,成本很高。
3. hibernate擁有完整的日誌系統,mybatis則欠缺一些。
hibernate日誌系統非常健全,涉及廣泛,包括:sql記錄、關係異常、優化警告、緩存提示、髒數據警告等;而mybatis則除了基本記錄功能外,功能薄弱很多。
三、 執行性能對比
1.在不考慮緩存的情況下,mybatis執行比hibernate快。
mybatis執行SQL語句,精確度高,hibernate一般都是又hql再生成SQL語句,在複雜查詢中,查詢次數會增加,查詢速度比mybatis慢一點
2.hibernate緩存機制比較完善,mybatis二級緩存機制不佳。
3.hibernate的事務管理機制比較完善,mybatis開發時一般使用spring提供的事務管理器
四、 維護對比
1. Hibernate的DAO層開發比MyBatis簡單,Mybatis需要維護SQL和結果映射。
2.Hibernate對對象的維護要比MyBatis好,對增刪改查的對象的維護要方便。
3.mybatis的SQL語句統一寫在XML配置文件中,維護時查找SQL語句方便,對高級的查詢維護較方便
五、 總結
hibernate與mybatis各有所長,hibernate功能強大,在映射、緩存、事務管理器、日誌管理這幾方面比較完善;mybatis輕巧,操作執行速度效率比hibernate快,直接使用SQL語句方便高級查詢。
個人建議:查詢較少,用hibernate,涉及到查詢非常多且複雜的項目用mybatis。