hibernate和mybatis的區別


轉自:https://www.cnblogs.com/huhewei/p/14244812.html

一、兩者最大的區別

  針對簡單邏輯,Hibernate與MyBatis都有相應的代碼生成工具,可以生成簡單基本的DAO層方法。

  針對高級查詢,MyBatis需要手動編寫SQL語句,以及ResultMap,而Hibernate有良好的映射機制,開發者無需關心SQL的生成與結果映射,可以更專注於流程。

  二、開發難度對比

  Hibernate的開發難度大於MyBatis,主要由於Hibernate比較復雜,龐大,學習周期比較長。

  MyBatis則相對簡單,並且MyBatis主要依賴於生氣了的書寫,讓開發者剛進更熟悉。

  三、sql書寫比較

  Hibernate也可以自己寫sql來指定需要查詢的字段,但這樣就破壞了Hibernate開發的簡潔性,不過Hibernate具有自己的日志統計。

  MyBatis的sql是手動編寫的,所以可以按照要求指定查詢的字段,不過沒有自己的日志統計,所以要借助Log4j來記錄日志。

四、數據庫擴展性計較

  Hibernate與數據庫具體的關聯在XML中,所以HQL對具體是用什么數據庫並不是很關心

  MyBatis由於所有sql都是依賴數據庫書寫的,所以擴展性、遷移性比較差。

 五、緩存機制比較

  Hibernate的二級緩存配置在SessionFactory生成配置文件中進行詳細配置,然后再在具體的表對象映射中配置那種緩存。

  MyBatis的二級緩存配置都是在每個具體的表對象映射中進行詳細配置,這樣針對不同的表可以自定義不同的緩沖機制,並且MyBatis可以在命名空間中共享相同的緩存配置和實例,通過Cache-ref來實現。

    兩者比較,因為Hibernate對查詢對象有着良好的管理機制,用戶無需關心SQL,所以在使用二級緩存時如果出現臟數據,系統會報出錯誤提示。 而MyBatis在這一方面使用二級緩存時需要特別小心,如果不能完全去頂數據更新操作的波及范圍,避免cache的盲目使用,否則,臟數據的出現會給系統的正常運行帶來很大的隱患。

 

Hibernate:hibernate是一個標准的ORM框架,不需要寫sql語句,維護關系比較復雜,sql語句自動生成,對sql語句優化,修改比較困難。

Hibernate的優缺點:

優點:面向對象開發,不需要自己寫sql語句。如果進行數據庫遷移不需要修改sql語句,只需要修改一下方言。

缺點:hibernate維護數據表關系比較復雜。完全是有hibernate來管理數據表的關系,對於我們來說完全是透明的,不易維護。

Hibernate自動生成sql語句,生成sql語句比較復雜,比較難挑錯。

Hibernate由於是面向對象開發,不能開發比較復雜的業務。

應用場景:

適合需求變化較少的項目,比如ERP,CRM等等

Mybatis框架對jdbc框架進行封裝,屏蔽了jdbc的缺點,開發簡單。

Mybatis只需要程序員關注sql本身,不需要過多的關注業務。對sql的優化,修改比較容易

適應場景:

適合需求變化多端的項目,比如:互聯網項目

 

mybatis與hibernate重要區別

企業開發進行技術選型 ,考慮mybatis與hibernate適用場景。

 

mybatis:入門簡單,程序容易上手開發,節省開發成本 。mybatis需要程序員自己編寫sql語句,是一個不完全 的ORM框架,對sql修改和優化非常容易實現 。

mybatis適合開發需求變更頻繁的系統,比如:互聯網項目。

hibernate:入門門檻高,如果用hibernate寫出高性能的程序不容易實現。hibernate不用寫sql語句,是一個 ORM框架。

hibernate適合需求固定,對象數據模型穩定,中小型項目,比如:企業OA系統

ORM(Object Relational Mapping)框架采用元數據來描述對象與關系映射的細節,元數據一般采用XML格式,並且存放在專門的對象一映射文件中。簡單理解為一種框架的格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM