mybatis和hibernate的區別

2022-04-07 15:39:03 字數 1114 閱讀 8492

hibernate作為一款資料庫翻譯工具解決了程式設計師在不同資料庫之間的遊走問題,但是在級聯方面如果雙向關聯後查詢資料可能會帶來無限查詢而進入死迴圈的狀態的影響。所以為了避免這樣的問題,我們可以採用mybatis替換hibernate。接下來給大家分享兩者的不同之處:

1·hibernate可以通過物件和資料庫的對映達到自動建立資料庫的功能,也就是當我們建立好物件之後,進行註解設定(如:@entity,@id,@column等等),,如果是用的spring,就在spring的配置檔案中設定一下,伺服器啟動就可以自動建立資料庫,我們在運算元據庫的時候可以把注意力集中放在物件上面,而mybatis不能自動建立資料庫。

2·hibernate運算元據庫是物件導向的,也就是根據物件查詢資料庫,這樣可以避免鏈結查詢等複雜的sql語句,查詢方式相對比mybatis方便簡單。mybatis不是物件導向進行查詢,而是使用特定的增刪查改方法載入配置檔案裡面書寫的sql語句。

3·mybatis一對多,多對一,一對一等關係是配置檔案中寫的sql語句確定的,對於物件之間的關係可以認為控制,可控性很強,但是在hibernate中物件之間的這種關係是通過註解的方式確定的,關係不靈活。

4·在hibernate中物件之間可以設定級聯關係,預設情況下一對多的查詢是懶載入方式,多對一是活躍載入,也可以通過手動設定級聯關係。但是問題就在於在查詢時如果級聯是雙向的,在查詢到以物件作為屬性的屬性時,又會再一次查詢回來,也就是通過老師查詢到學生後,由於學生中有老師這個物件作為屬性,所以還會查詢到老師,隨後不斷重複進入迴圈查詢。而在mybatis中這種情況就不會出現,當如期查到物件後如果會有進入迴圈查詢的情況就會將學生中的老師設為null,有效避免hibernate的不足。

5·在mybatis中有一核心功能之一:動態sql.由於在專案中會出現多條件查詢,條件太多就會是sql語句繁瑣複雜冗長,mybatis就提供了一些標籤:if,where,set,foreach,trim,choose等,可以進行sql語句的拼接,方便,實用。而在hibernate中沒有這些功能。

6·hibernate使用的時候,由於是物件導向,但是運算元據庫還是會涉及到sql語句,hibernate所採用的方式是針對不同的資料庫方言,將hql語句轉化為sql語句。但是mybatis就是直接寫的sql語句,所以兩者相比,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.是實體級別的快取,只有在查詢物件級別的時...