1. 程式人生 > >mybatis和hibernate的區別的簡單的說的一下

mybatis和hibernate的區別的簡單的說的一下

個人的理解的,有不足的請多多包涵的,請多多的指教。

兩者的區別的分析,如下!

1.hibernate的框架比較笨重,mybatis的框架的是一個新興的框架,相比較hibernate較輕些。

 hibernate是一個完全的orm的框架, 而mybatis的是一個半orm 框架

2.hibernate的核心的


從上圖中,我們可以看出Hibernate六大核心介面,兩個主要配置檔案,以及他們直接的關係。Hibernate的所有內容都在這了。那我們從上到下簡單的認識一下,每個介面進行一句話總結。

1、Configuration介面:負責配置並啟動Hibernate

2、SessionFactory介面:負責初始化Hibernate

3、Session介面:負責持久化物件的CRUD操作

4、Transaction介面:負責事務

5、Query介面和Criteria介面:負責執行各種資料庫查詢

注意:Configuration例項是一個啟動期間的物件,一旦SessionFactory建立完成它就被丟棄了。


mybatis的核心:


原理詳解:

        MyBatis應用程式根據XML配置檔案建立SqlSessionFactory,SqlSessionFactory在根據配置,配置來源於兩個地方,一處是配置檔案,一處是Java程式碼的註解,獲取一個SqlSession。SqlSession包含了執行sql所需要的所有方法,可以通過SqlSession例項直接執行對映的sql語句,完成對資料的增刪改查和事務提交等,用完之後關閉SqlSession。


3.hibernate的優缺點;

優點:

1、更加物件化

      以物件化的思維操作資料庫,我們只需要操作物件就可以了,開發更加物件化。

2、移植性
      因為Hibernate做了持久層的封裝,你就不知道資料庫,你寫的所有的程式碼都具有可複用性。

3、Hibernate是一個沒有侵入性的框架,沒有侵入性的框架我們稱為輕量級框架。

      對比Struts的Action和ActionForm,都需要繼承,離不開Struts。Hibernate不需要繼承任何類,不需要實現任何介面。這樣的物件叫POJO物件。

4、Hibernate程式碼測試方便。

5、提高效率,提高生產力。

缺點:

1、使用資料庫特性的語句,將很難調優

2、對大批量資料更新存在問題

3、系統中存在大量的攻擊查詢功能

mybaits 的優缺點:

MyBatis的優缺點

優點:

1、簡單易學

       mybatis本身就很小且簡單。沒有任何第三方依賴,最簡單安裝只要兩個jar檔案+配置幾個sql對映檔案易於學習,易於使用,通過文件和原始碼,可以比較完全的掌握它的設計思路和實現。

2、靈活

       mybatis不會對應用程式或者資料庫的現有設計強加任何影響。 sql寫在xml裡,便於統一管理和優化。通過sql基本上可以實現我們不使用資料訪問框架可以實現的所有功能,或許更多。

3、解除sql與程式程式碼的耦合

       通過提供DAL層,將業務邏輯和資料訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和程式碼的分離,提高了可維護性。

4、提供對映標籤,支援物件與資料庫的orm欄位關係對映


5、提供物件關係對映標籤,支援物件關係組建維護


6、提供xml標籤,支援編寫動態sql。

缺點:

1、編寫SQL語句時工作量很大,尤其是欄位多、關聯表多時,更是如此。


2、SQL語句依賴於資料庫,導致資料庫移植性差,不能更換資料庫。

3、框架還是比較簡陋,功能尚有缺失,雖然簡化了資料繫結程式碼,但是整個底層資料庫查詢實際還是要自己寫的,工作量也比較大,而且不太容易適應快速資料庫修改。

4、二級快取機制不佳


總結:

①hibernate對資料庫的依賴性不高, hibernate只關心表與表的之間的關係,mybatis對資料庫的依賴性高,它關注的是引數的對映和結果集的對映

② hibernate一般用於傳統專案的,對資料量的大的一 般使hibernate,維護比mybatis的好維護。

    mybatis一般用於新興的網際網路專案的,資料量小的,開發快,學習成本低。

③ mybatis可以對sql語句的更加細緻的分析,而hibernate的不行,優化也沒有什麼太大的效果。