區別2

mybatis是半自動化的,sql寫在xml裏,便於管理, 解除sql與程序代碼的耦合,同時能夠防止SQL注入。hibernate是全自動的,sql不少都是自動生成的,沒法直接維護sql,寫sql的靈活度上hibernate不及mybatis。程序員

========原文以下=====sql

Hibernate的優勢:數據庫

一、hibernate是全自動,hibernate徹底能夠經過對象關係模型實現對數據庫的操做,擁有完整的JavaBean對象與數據庫的映射結構來自動生成sql。緩存

二、功能強大,數據庫無關性好,O/R映射能力強,須要寫的代碼不多,開發速度很快。mybatis

三、有更好的二級緩存機制,可使用第三方緩存。性能

四、數據庫移植性良好。學習

五、hibernate擁有完整的日誌系統,hibernate日誌系統很是健全,涉及普遍,包括sql記錄、關係異常、優化警告、緩存提示、髒數據警告等優化

Hibernate的缺點:hibernate

一、學習門檻高,精通門檻更高,程序員如何設計O/R映射,在性能和對象模型之間如何取得平衡,以及怎樣用好Hibernate方面須要的經驗和能力都很強才行設計

二、hibernate的sql不少都是自動生成的,沒法直接維護sql;雖然有hql查詢,但功能仍是不及sql強大,見到報表等變態需求時,hql查詢要虛,也就是說hql查詢是有侷限的;hibernate雖然也支持原生sql查詢,但開發模式上卻與orm不一樣,須要轉換思惟,所以使用上有些不方便。總之寫sql的靈活度上hibernate不及mybatis。

Mybatis的優勢:

一、易於上手和掌握,提供了數據庫查詢的自動對象綁定功能,並且延續了很好的SQL使用經驗,對於沒有那麼高的對象模型要求的項目來講,至關完美。

二、sql寫在xml裏,便於統一管理和優化, 解除sql與程序代碼的耦合。

三、提供映射標籤,支持對象與數據庫的orm字段關係映射

四、 提供對象關係映射標籤,支持對象關係組建維護

五、提供xml標籤,支持編寫動態sql。

六、速度相對於Hibernate的速度較快

Mybatis的缺點:

一、關聯表多時,字段多的時候,sql工做量很大。

二、sql依賴於數據庫,致使數據庫移植性差。

三、因爲xml裏標籤id必須惟一,致使DAO中方法不支持方法重載。

四、對象關係映射標籤和字段映射標籤僅僅是對映射關係的描述,具體實現仍然依賴於sql。

五、DAO層過於簡單,對象組裝的工做量較大。

六、不支持級聯更新、級聯刪除。

七、Mybatis的日誌除了基本記錄功能外,其它功能薄弱不少。

八、編寫動態sql時,不方便調試,尤爲邏輯複雜時。

九、提供的寫動態sql的xml標籤功能簡單,編寫動態sql仍然受限,且可讀性低。

相關文章
相關標籤/搜索