淺談MyBatis和Hibernate二者的特色及對比

MyBatis和Hibernate有一些共同點,都爲持久層框架。但Hibernate能夠說是比較老舊的框架,這樣講的緣由是雖然Hibernate有比較好的可移植性,並且對JDBC有較好的封裝,便於使用SQL進行操做,但因爲MySQL數據庫只適用於中小企業,因此Hibernate的使用就有必定的侷限性;相比於Hibernate,MyBatis對JDBC的封裝程度沒那麼深,對開發人員的要求較高,但對大型數據庫的優化和適配性較強,因此適用於處理大量數據。MyBatis和Hibernate二者的特色及對比,具體的不一樣可見以下:程序員

首先從開發速度來比較,Mybatis其實要比Hibernate要更好上手,由於Hibernate是對JDBC的深度封裝,而Mybatis就顯得更加開放,並且簡單易學。這也是Mybatis更加流行的緣由,正由於如此,Mybatis的開發社區近年來也開始活躍起來,下載一些支持開發的工具也較爲方便;Mybatis也有本身的代碼生成工具,能夠生成簡單基本的DAO層方法,針對高級查詢,Mybatis須要手動編寫SQL語句,以及ResultMap。而Hibernate有良好的映射機制,尚學堂•百戰程序員陳老師指出開發者無需關心SQL的生成與結果映射,能夠把更多的精力放在業務流程上。數據庫

在系統調優方面,Hibernate能夠制定合理的緩存策略,在延遲加載方面處理得較好,有較爲合理的Session管理機制,便於批量抓取,同時有合理的O/R映射設計。Mybatis在調優方面,一樣有Session機制和二級緩存,同時還能夠對SQL進行優化設計;Hibernate通常是查詢數據庫的全部字段,若是指定字段查詢,程序較爲繁瑣,而Mybatis的SQL是手動編寫的,因此能夠按需求指定查詢的字段。雖然Hibernate具備本身的日誌統計,但一樣能夠經過Log4j進行日誌記錄。緩存

在對象管理方面,Hibernate 是完整的對象/關係映射解決方案,對象管理功能比較完善,使開發者不用再關注底層數據庫系統的細節。也就是說,相對於常見的 JDBC/SQL 持久層方案中須要管理 SQL 語句,Hibernate採用了更天然的面向對象的視角來持久化 Java 應用中的數據。而MyBatis在這方面沒有特定的文檔說明,但也便於開發者發揮自身的想法來對對象進行管理。app

在緩存機制方面,剛纔已經提到過,Hibernate的一級緩存是Session緩存,一級緩存是與Session的生命週期相關的。而它的二級緩存是SessionFactory級的緩存其中可分爲內置緩存和外置緩存,其中的內置緩存中存放了關於SessionFactory對象的一些集合屬性包含的數據,包括映射元素據及預約SQL語句等;而Mybatis通常也可分爲二級緩存,一級緩存是 SqlSession 級別的緩存二級緩存是 mapper 級別的緩存,多個 SqlSession 共享,而它默認狀態是開啓一級緩存,這樣對開發者而言是一種便捷。但也有人指出,Mybatis的緩存機制在必定程度上限制了Mybatis的推廣。以上就是對MyBatis和Hibernate二者的特色及對比,固然還有不少方面能夠比較,從此會繼續與你們分享。
 框架

相關文章
相關標籤/搜索