hibernate與mybatis區別

一、        開發對比

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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章