廢話不多說,直接上干貨
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對比
| 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更靈活, | 面向物件的思維方式更有利于業務系統建模分析,適合單資料庫,資料量小,無多表關聯,資料庫結構不穩定的專案, |
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/315868.html
標籤:Java
