天天看點

MyBatis和Hibernate的優缺點對比

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仍然受限,且可讀性低。

摘自: https://www.cnblogs.com/javacatalina/p/6590321.html

繼續閱讀