1. 程式人生 > 其它 >Hibernate與MyBatis

Hibernate與MyBatis

一、兩者最大的區別

  針對簡單邏輯,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系統