Mybatis與Hibernate的詳細對比

2021-09-02 15:54:54 字數 1753 閱讀 6519

這篇博文我們重點分析一下mybatishibernate的區別,當然在前面的博文中我們已經深入的研究了mybatis和hibernate的原理。

mybatis

【持久化框架】mybatis簡介與原理

hibernate

【ssh高階之路】hibernate基本原理(一)

【ssh高階之路】hibernate搭建開發環境+簡單例項(二)

【ssh高階之路】hibernate基本對映(三)

【ssh高階之路】hibernate對映——多對一單向關聯對映(四)

【ssh高階之路】hibernate對映——一對一單向關聯對映(五)

【ssh高階之路】hibernate對映——一對一雙向關聯對映(六)

【ssh高階之路】hibernate對映——一對多關聯對映(七)

【ssh高階之路】hibernate對映——多對多關聯對映(八)

【ssh高階之路】hibernate系列——總結篇(九)

作為一位優秀的程式設計師,只知道一種orm框架是遠遠不夠的。在開發專案之前,架構的技術選型對於專案是否成功起到至關重要的作用。我們不僅要了解同型別框架的原理以及技術實現,還要深入的理解各自的優缺點,以便我們能夠在專案的實施過程中面對的困難更少。

所以這篇博文我們要將mybatis和hibernate進行一下深入的對比,加深我們對持久化框架的理解。下面我們開始今天的旅行。

難易度hibernate的真正掌握要比mybatis困難,hibernate比mybatis更加重量級一些。

mybatis框架相對簡單很容易上手,但也相對簡陋些。

開發工作量

mybatis需要我們手動編寫sql語句,回歸最原始的方式,所以可以按需求指定查詢的字段,提高程式的查詢效率。

hibernate也可以自己寫sql語句來指定需要查詢的字段,但這樣破壞了hibernate封裝以及簡潔性。

mybatis由於所有sql都是依賴資料庫書寫的,所以擴充套件性,遷移性比較差。

hibernate與資料庫具體的關聯都在xml中,所以hql對具體是用什麼資料庫並不是很關心。

相同點hibernate和mybatis的二級快取除了採用系統預設的快取機制外,都可以通過實現你自己的快取或為其他第三方快取方案,建立介面卡來完全覆蓋快取行為。

不同點hibernate的二級快取配置在sessionfactory生成的配置檔案中進行詳細配置,然後再在具體的表-物件對映中配置是那種快取。

mybatis的二級快取配置都是在每個具體的表-物件對映中進行詳細配置,這樣針對不同的表可以自定義不同的快取機制。並且mybatis可以在命名空間中共享相同的快取配置和例項,通過cache-ref來實現。

兩者比較

因為hibernate對查詢物件有著良好的管理機制,使用者無需關心sql。所以在使用二級快取時如果出現髒資料,系統會報出錯誤並提示。而mybatis在這一方面,使用二級快取時需要特別小心。如果不能完全確定資料更新操作的波及範圍,避免cache的盲目使用。否則,髒資料的出現會給系統的正常執行帶來很大的隱患。

兩者相同點

hibernate優勢

mybatis優勢在博文的結尾,我們將mybatis和hibernate之間的區別自個用六個詞做總結:

mybatis:小巧、方便、高效、簡單、直接、半自動化

hibernate:強大、方便、高效、複雜、間接、全自動化

MyEclipse中刪除對Hibernate的支援

在myeclipse新增hibernate容易,刪除難,因為myeclipse中沒有刪除hibernate的功能鍵。但如果我們需要重新生成hibernate時,必須先徹底刪除hibernate支援。下面是手工刪除hibernate支援的方法 1.把專案根目錄下檔案.myhibernatedata刪除...

移除myeclipse中對hibernate的支援

在使用hibernate框架進行開發時可能會遇到配置錯誤或者需要刪除hibernate支援的情況。下面就說一下如何徹底移除專案的hibernate支援。移除後就能重新新增hibernate支援,重新配置了。1.找到你的專案的目錄 2.刪除.myhibernatedata檔案 3.找到.project...

Hibernate一級快取 Hibernate

1.session級別的快取,同session繫結,生命週期和session相同,當session銷毀,它也清除。管理以及快取的方法有clear evict clear清除session快取,evict將某個物件清除快取,相當於成為游離態detached。2.是實體級別的快取,只有在查詢物件級別的時...