MyBatis和Hibernate的優缺點對比

來源:互聯網
上載者:User

標籤:靈活   方法   關聯   二級緩衝   工作量   健全   方便   資料庫的操作   好的   

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

MyBatis和Hibernate的優缺點對比

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.