1. 程式人生 > >Mybatis與Hibernate的區別

Mybatis與Hibernate的區別

mybatis是持久層框架,把資料持久化。

JDBC基本的資料庫連線,最底層的技術,效率最高。

DButils;

Hibernate是一個持久層框架,封裝的東西很多,學習成本很高。

Spring Data JPA 核心還是Hibernate,只寫Dao層介面即可,不需要程式設計師來書寫實現類。

Mybatis 時下使用最多的持久層框架,執行效率大於Hibernate,因為Hibernate官方推薦HQL語句,HQL需要轉SQL語句(通過對映檔案找到實體類,轉資料庫名),而Mybatis是面向SQL語句直接程式設計的。

原生SQL的執行流程:

                1.獲取資料庫驅動

                2.獲取連線驅動

                3.編寫SQL語句,獲得Sql物件

                4.處理結果集

                5.關閉資源(resultSet、preparedstatement、connection)

JDBC的弊端:                                                                                                                                

                1.硬編碼問題:體現在驅動名,獲取連線的URL,賬戶名,密碼。   (配置檔案)

                2.連線問題:資料庫連結建立,釋放頻繁造成系統資源浪費從而影響系統性能。(連線池)

                3.結果集問題:獲取結果不方便。(把獲取的結果封裝實體類)

Hibernate與Mybatis的區別:

                1.Hibernate是一個全封裝的框架,學習成本較高,Mybatis是一個半封裝的框架,比較靈活。

                2. Mybatis的執行效果要比Hibernamte高

                3.Hibernate多用於傳統行業,Mybatis多用於網際網路行業。

    Mybatis和hibernate不同,它不完全是一個ORM框架,因為MyBatis需要程式設計師自己編寫Sql語句,不過mybatis可以通過XML或註解方式靈活配置要執行的sql語句,並將java物件和sql語句對映生成最終執行的sql,最後將sql執行的結果再對映生成java物件。

     Mybatis學習門檻低,簡單易學,程式設計師直接編寫原生態sql,可嚴格控制sql執行效能,靈活度高,非常適合對關係資料模型要求不高的軟體開發,例如網際網路軟體、企業運營類軟體等,因為這類軟體需求變化頻繁,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到資料庫無關性,如果需要實現支援多種資料庫的軟體則需要自定義多套sql對映檔案,工作量大。

    Hibernate物件/關係對映能力強,資料庫無關性好,對於關係模型要求高的軟體(例如需求固定的定製化軟體)如果用hibernate開發可以節省很多程式碼,提高效率。但是Hibernate的學習門檻高,要精通門檻更高,而且怎麼設計O/R對映,在效能和物件模型之間如何權衡,以及怎樣用好Hibernate需要具有很強的經驗和能力才行。

    總之,按照使用者的需求在有限的資源環境下只要能做出維護性、擴充套件性良好的軟體架構都是好架構,所以框架只有適合才是最好。