學過JAVA的程序員一定都使用過Hibernate和MyBatis,或者至少聽過他們的大名。那麼到底Hibernate好還是MyBatis更好呢。事實是沒有萬能的鑰匙。他們兩個各有利弊,你只有發揮他們的優勢,摒棄他們的缺點,才能遊刃有餘地使用他們。下面,我們就來看看他們有什麼相同和區別。
MyBatis
它主要是以數據庫為中心的數據映射器。它可以將結果集映射到對象,可以使用簡單的 XML 或註解來配置和映射原生信息。
優點:
簡單和更快的開發
適合編寫純sql(存儲的proc,包括的函數,複雜的查詢)
缺點:
SQL可能需要綁定到指定的數據庫
沒有內置的緩存,分頁機制(使用最大記錄進行查詢實際上會進行全表掃描)
使用場景:
需要完全控制SQL時使用,特別是當您對SQL有充分的瞭解時。
數據模型與對象模型不完全匹配,或者會隨著時間的變化而變得複雜。
Hibernate
它主要是一個以對象為中心的對象關係映射器。換句話說,它只需花費很少的精力就可以將您的對象模型映射到數據庫表(對象模型與數據模型同步)。
優點:
它沒有侵入性,即所謂的輕量級框架。
移植性會很好。
緩存機制。提供一級緩存和二級緩存。
簡潔的HQL編程。
缺點:
通常需要進行微調,會話很難正確完成
Hibernate在批量數據處理的時候是有弱勢
學習成本高,很複雜
使用場景:
當數據對象映射同步並且您完全控制db時使用。
不想編寫SQL,或者討厭重複的SQL語句時。
閱讀更多 夢迴故里歸來 的文章