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的不行,優化也沒有什麼太大的效果。