Mybatis與Hibernate的區別

2021-10-25 02:16:18 字數 876 閱讀 2681

hibernate是全自動,而mybatis是半自動。

hibernate完全可以通過物件關係模型實現對資料庫的操作,通過實體物件與資料庫的表進行對映來自動生成sql。而mybatis僅有基本的字段對映,物件資料以及物件實際關係仍然需要通過手寫sql來實現和管理。

hibernate資料庫移植性遠大於mybatis。

hibernate通過它強大的對映結構和hql語言,大大降低了物件與不同資料庫(oracle、mysql等)的耦合性,而mybatis由於需要手寫sql,因此sql中很容易包含一些不同的資料庫不相容的函式或者語法,移植性也會隨之降低很多,成本很高。

hibernate擁有完整的日誌系統,mybatis則欠缺一些。

hibernate日誌系統非常健全,涉及廣泛,包括:sql記錄、關係異常、優化警告、快取提示、髒資料警告等;而mybatis沒有自己的日誌系統,一般借助log4j來記錄日誌。

mybatis相比hibernate需要關心很多細節

hibernate配置要比mybatis複雜的多,學習成本也比mybatis高。但也正因為mybatis使用簡單,才導致它要比hibernate關心很多技術細節。mybatis由於不用考慮很多細節,開發模式上與傳統jdbc區別很小,因此很容易上手並開發專案。

sql直接優化上,mybatis要比hibernate方便很多

由於mybatis的sql都是寫在xml裡,因此優化sql比hibernate方便很多。而hibernate的sql很多都是自動生成的,無法直接維護sql;雖有hql,但功能還是不及sql強大,見到報表等**需求時,hql也歇菜,也就是說hql是有侷限的;hibernate雖然也支援原生sql,但開發模式上卻與orm不同,需要轉換思維,因此使用上不是非常方便。總之寫sql的靈活度上hibernate不及mybatis。

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.是實體級別的快取,只有在查詢物件級別的時...