Hibernate与MyBatis区别
Hibernate是當前主流的ORM框架,對數據庫結構提供了較為完整的封裝。
MyBatis同樣也是非常流行的ORM框架,主要在于pojo與SQL之間的映射關系。
區別:
? 1、兩者最大的區別
??? 針對簡單邏輯,Hibernate與MyBatis都有相應的代碼生成工具,可以生成簡單基本的DAO層方法。
??? 針對高級查詢,MyBatis需要手動編寫SQL語句,以及ResultMap,而Hibernate有良好的映射機制,開發者無需關心SQL的生成與結果映射,可以更專注于流程。
? 2、開發難度對比
??? Hibernate的開發難度大于MyBatis,主要由于Hibernate比較復雜,龐大,學習周期比較長。
??? MyBatis則相對簡單,并且MyBatis主要依賴于生氣了的書寫,讓開發者剛進更熟悉。
? 3、sql書寫比較
??? MyBatis的sql是手動編寫的,所以可以按照要求指定查詢的字段,不過沒有自己的日志統計,所以要借助Log4j來記錄日志。
??? Hibernate也可以自己寫sql來指定需要查詢的字段,但這樣就破壞了Hibernate開發的簡潔性,不過Hibernate具有自己的日志統計。
? 4、數據庫擴展性計較
??? MyBatis由于所有sql都是依賴數據庫書寫的,所以擴展性、遷移性比較差。
??? Hibernate與數據庫具體的關聯在XML中,所以HQL對具體是用什么數據庫并不是很關心
? 5、緩存機制比較
??? 相同點:Hibernate和MyBatis的二級緩存除了采用系統默認的緩存機制外,都可以通過實現你自己的緩存成為其它第三方緩存方案,創建適配器來覆蓋緩存行為。
??? 不同點:Hibernate的二級緩存配置在SessionFactory生成配置文件中進行詳細配置,然后再在具體的表對象映射中配置那種緩存。
??? MyBatis的二級緩存配置都是在每個具體的表對象映射中進行詳細配置,這樣針對不同的表可以自定義不同的緩沖機制,并且MyBatis可以在命名空間中共享相同的緩存配置和實例,通過Cache-ref來實現。
??? 兩者比較,因為Hibernate對查詢對象有著良好的管理機制,用戶無需關心SQL,所以在使用二級緩存時如果出現臟數據,系統會報出錯誤提示。
??? 而MyBatis在這一方面使用二級緩存時需要特別小心,如果不能完全去頂數據更新操作的波及范圍,避免cache的盲目使用,否則,臟數據的出現會給系統的正常運行帶來很大的隱患。
? 6、總結
??? Hibernate與MyBatis都可以通過SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session來開啟執行事務和SQL語句。
??? 而MyBatis的優勢是MyBatis可以進行更為細致的SQL優化,可以減少查詢字段,并且容易掌握。
??? Hibernate的優勢是Dao層開發比MyBatis簡單,MyBatis需要維護sql和結果映射,數據庫移植性,MyBatis的數據庫移植性不好,不同的數據庫需要寫不同SQL,有更好的二級緩存機制,可以使用第三方緩存,MyBatis本身提供的緩存機制不佳。
???
轉載于:https://www.cnblogs.com/hedianwei/p/4570109.html
總結
以上是生活随笔為你收集整理的Hibernate与MyBatis区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows环境下的NodeJS+NP
- 下一篇: Asp.Net MVC中使用ACE模板之