廢話不多說,直接上干貨
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更靈活。 | 面向對象的思維方式更有利於業務系統建模分析,適合單數據庫,數據量小,無多表關聯,數據庫結構不穩定的項目。 |