hibernate和mybatis的區別

2022-06-01 22:51:15 字數 3707 閱讀 5151

一、兩者最大的區別

針對簡單邏輯,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:入門簡單,程式容易上手開發,節省開發成本 。mybatis需要程式設計師自己編寫sql語句,是乙個不完全 的orm框架,對sql修改和優化非常容易實現 。

mybatis適合開發需求變更頻繁的系統,比如:網際網路專案。

hibernate:入門門檻高,如果用hibernate寫出高效能的程式不容易實現。hibernate不用寫sql語句,是乙個 orm框架。

hibernate適合需求固定,物件資料模型穩定,中小型專案,比如:企業oa系統

一、兩者最大的區別

針對簡單邏輯,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:入門簡單,程式容易上手開發,節省開發成本 。mybatis需要程式設計師自己編寫sql語句,是乙個不完全 的orm框架,對sql修改和優化非常容易實現 。

mybatis適合開發需求變更頻繁的系統,比如:網際網路專案。

hibernate:入門門檻高,如果用hibernate寫出高效能的程式不容易實現。hibernate不用寫sql語句,是乙個 orm框架。

hibernate適合需求固定,物件資料模型穩定,中小型專案,比如:企業oa系統

spring整合使用持久層框架mybatis(二)

id sqlsessionfactory class org.mybatis.spring.sqlsessionfactorybean name datasource ref datasource name configlocation value classpath mybatis config....

Hibernate分頁和投影

分頁 dao 分頁查詢 param index param pagesize return public listfindbypage integer index,integer pagesize service public listfindbypage integer index,integer...

spring MVC和hibernate的結合

我們在沒有用註解寫spring配置檔案的時候 會在spring配置檔案中定義dao層的bean,這樣我們在service層中,寫setdao方法,就可以直接通過介面呼叫dao層。用了註解寫法後 在配置檔案中不用再寫dao層的bean。只需要在dao實現類中加入 repository public c...