Hibernate和MyBatis的區別
阿新 • • 發佈:2021-10-14
廢話不多說,直接上乾貨
1、Hibernate的優/缺點
Hibernate | |
優點 |
|
缺點 |
|
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、二級快取機制不佳。 |
MyBatis | Hibernate | |
---|---|---|
量級: | 輕量級,上手簡單,外掛多 | 重量級,功能齊全,精通較難(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更靈活。 | 面向物件的思維方式更有利於業務系統建模分析,適合單資料庫,資料量小,無多表關聯,資料庫結構不穩定的專案。 |