1. 程式人生 > 其它 >Hibernate和MyBatis的區別

Hibernate和MyBatis的區別

廢話不多說,直接上乾貨

1、Hibernate的優/缺點

Hibernate
優點

(1)不需要編寫的SQL語句(不需要編輯JDBC),只需要操作相應的物件就可以了,就可以能夠儲存、更新、刪除、載入物件,可以提高生產效率

(2)使用Hibernate,移植性好(只要使用Hibernate標準開發,更換資料庫時,只需要配置相應的配置檔案就可以了,不需要做其它任務的操作)

(3)Hibernate實現了透明持久化。當儲存一個物件時,這個物件不需要繼承Hibernate中的任何類、實現任何介面,

只是個純粹的單純物件—稱為POJO物件(最純粹的物件—這個物件沒有繼承第三方框架的任何類和實現它的任何介面)

(4)Hibernate是一個沒有侵入性的框架,沒有侵入性的框架我們一般稱為輕量級框架

(5)Hibernate程式碼測試方便

(6)有更好的二級快取機制,可以使用第三方快取

缺點

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

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

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

(4)學習門檻不低,要精通門檻更高。

2、MyBatis的優/缺點

MyBatis
優點

1、入門簡單,即學即用

2、基於sQL語句程式設計,相當靈活,不會對應用程式或者資料庫的現有設計造成任何影響SQL寫在XML裡,解除 sql與程式程式碼的耦合,便於統一管理;提供 XML標籤,支援編寫動態SQL語句,並可重用。

3、與JDBC相比,減少了50%以上的程式碼量,消除了JDBC大量冗餘的程式碼,不需要手動開關連線;

4、很好的與各種資料庫相容(因為MyBatis 使用JDBC來連線資料庫,所以只要JDBC支援的資料庫MyBatis都支援)。

5、能夠與Spring很好的整合;

6、提供對映標籤,支援物件與資料庫的ORM欄位關係對映;提供物件關係對映標籤,支援物件關係元件維護。



缺點

1、SQL語句的編寫工作量較大,尤其當欄位多、關聯表多時,對開發人員編寫SQL語句的功底有一定要求。

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

3、二級快取機制不佳。

3、Hibernate與MyBatis對比

MyBatisHibernate
量級: 輕量級,上手簡單,外掛多 重量級,功能齊全,精通較難(ps:此處指的重量級是相對於MyBatis來說的,Hibernate在框架中是屬於輕量級的)
SQL自由度: SQL自由度高。提供更靈活的SQL編寫方式 SQL自由度低,僅對基本的SQL語法有較好支援。不過Hibernate也支援自己手動寫SQL。
開發效率: 低。需要維護SQL。 高。DAO層開發更簡單,支援JPA。
資料庫無關性: 差。所有SQL都是依賴資料庫書寫的,需要針對特定資料庫維護SQL. 好。高度解耦,封裝了JDBC的實現,只需在配置中指定資料庫。
快取: 自身的快取機制較差。 自身的快取機制較好,可避免髒讀。
對映: POJo與SQL的對映,將SQL所需的引數、返回的結果欄位對映到指定PoJo,半ORM,實際是sQL mapping POJO與資料庫表的對映,自動生成和執行SQL,完全的ORM
效能: 效能稍高 用封裝方法效能會降低一點( SQL生成、全欄位查詢),用封裝方法效能會降低一點( SQL生成、全欄位查詢),
適用場景: 擅長複雜的查詢,適用於分析型系統。計算機叢集需要跨資料庫事務時,Mybatis更靈活。 面向物件的思維方式更有利於業務系統建模分析,適合單資料庫,資料量小,無多表關聯,資料庫結構不穩定的專案。