Hibernate的優點:
1、hibernate是全自動,hibernate完全可以通過物件關系模型實作對資料庫的操作,擁有完整的JavaBean物件與資料庫的映射結構來自動生成sql。
2、功能強大,資料庫無關性好,O/R映射能力強,需要寫的代碼很少,開發速度很快。
3、有更好的二級快取機制,可以使用第三方快取。
4、資料庫移植性良好。
5、hibernate擁有完整的日志系統,hibernate日志系統非常健全,涉及廣泛,包括sql記錄、關系例外、優化警告、快取提示、臟資料警告等
Hibernate的缺點:
1、學習門檻高,精通門檻更高,程式員如何設計O/R映射,在性能和物件模型之間如何取得平衡,以及怎樣用好Hibernate方面需要的經驗和能力都很強才行
2、hibernate的sql很多都是自動生成的,無法直接維護sql;雖然有hql查詢,但功能還是不及sql強大,見到報表等變態需求時,hql查詢要虛,也就是說hql查詢是有局限的;hibernate雖然也支持原生sql查詢,但開發模式上卻與orm不同,需要轉換思維,因此使用上有些不方便。總之寫sql的靈活度上hibernate不及mybatis。
Mybatis的優點:
1、易于上手和掌握,提供了資料庫查詢的自動物件系結功能,而且延續了很好的SQL使用經驗,對于沒有那么高的物件模型要求的專案來說,相當完美。
2、sql寫在xml里,便于統一管理和優化, 解除sql與程式代碼的耦合。
3、提供映射標簽,支持物件與資料庫的orm欄位關系映射
4、 提供物件關系映射標簽,支持物件關系組建維護
5、提供xml標簽,支持撰寫動態sql。
6、速度相對于Hibernate的速度較快
Mybatis的缺點:
1、關聯表多時,欄位多的時候,sql作業量很大。
2、sql依賴于資料庫,導致資料庫移植性差。
3、由于xml里標簽id必須唯一,導致DAO中方法不支持方法多載。
4、物件關系映射標簽和欄位映射標簽僅僅是對映射關系的描述,具體實作仍然依賴于sql。
5、DAO層過于簡單,物件組裝的作業量較大。
6、不支持級聯更新、級聯洗掉。
7、Mybatis的日志除了基本記錄功能外,其它功能薄弱很多。
8、撰寫動態sql時,不方便除錯,尤其邏輯復雜時。
9、提供的寫動態sql的xml標簽功能簡單,撰寫動態sql仍然受限,且可讀性低。
uj5u.com熱心網友回復:
分析的很透徹
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/22605.html
標籤:Java相關
上一篇:jpa 使用注解insert一條記錄時,可以回傳一個指定的欄位嗎?
下一篇:看過來
