目錄
1.ORM?考慮
SpringData JPA
Hibernate
MyBatis
2.業務查詢的區別
Spring Data JPA
Hibernate
Mybatis
3.可拓展性?
Spring Data JPA
?Hibernate
Mybatis
4.對緩存
?Spring Data JPA
Hibernate
Mybatis
5.難度性?
Spring Data JPA
Hibernate
Mybatis??
總述
Spring Data JPA?
Mybatis
Hibernate
1.ORM?考慮
SpringData JPA
- 只是接口,一種規范,具體的實現還是ORM做的
Hibernate
- 是完備的 ORM 框架,是符合 JPA 規范的,Hibernate 使用 JPA 就可以無需考慮數據庫的兼容性問題。
MyBatis
- 不完備的ORM框架,比單純寫 JDBC 肯定是方便一點,但無可避免還是要寫SQL,且無法做到跨數據庫 。
注:使用?Hibernate?的一個難點是,如何來設計對象之間的關系。如果是關系型數據庫的話,表和表是通過外鍵來進行關聯的。而在 ORM 中,則需要從面向對象的角度出發,來設計對象之間的關聯關系。這個是需要思路上做一個轉變的。
2.業務查詢的區別
Spring Data JPA
- 有基礎的接口api ,可使用內置的增刪改查方法
Hibernate
- 有基礎的查詢方法,也可以根據具體的業務編寫自定義的SQL
Mybatis
- 需要手動寫SQL,支持注解及xml的形式
3.可拓展性?
Spring Data JPA
- 通過命名規范查詢、注解查詢規范數據類型,無需關心數據庫的差異。(注:但是通過本地化SQL查詢的話,就不易擴展)
?Hibernate
- 與數據庫具體的關聯都在XML中,不用關心數據庫類型。
Mybatis
- 所有SQL都是依賴數據庫書寫的,所以擴展性,遷移性比較差?
4.對緩存
?Spring Data JPA
- 可以通過自己的緩存或第三方緩存
Hibernate
- Hibernate有三級緩存,而二級緩存是在SessionFactory生成的配置文件中配置,然后再在具體的表-對象映射中配置其緩存類型
Mybatis
- 具有二級緩存,二級緩存在每個具體的表-對象映射中配置,針對不同的表可以自定義不同的緩存機制。可通過Cache-ref實現在命名空間中共享相同的緩存配置和實例
注:Hibernate和Mybatis的二級緩存也可以通過實現你自己的緩存或其他第三方緩存方案,創建適配器來完全覆蓋其原緩存
5.難度性?
Spring Data JPA
- 易上手,通過命名規范、注解查詢簡化查詢操作。
Hibernate
- 開發難度要大于Mybatis、Spring Data。主要是由于Hibernate封裝了完整的對象關系映射機制,以至于內部的實現比較復雜、龐大,學習周期較長。
Mybatis??
- 主要依賴于SQL的編寫與ResultMap的映射。
總述
Spring Data JPA?
- 極大的簡化了數據庫訪問,可以通過命名規范、注解的方式較快的編寫SQL。
Mybatis
- 學習門檻低,簡單易學,程序員直接編寫原生態sql,可嚴格控制sql執行性能,靈活度高,非常適合對關系數據模型要求不高的軟件開發,例如互聯網軟件、企業運營類軟件等,因為這類軟件需求變化頻繁,一但需求變化要求成果輸出迅速。但是靈活的前提是mybatis無法做到數據庫無關性,如果需要實現支持多種數據庫的軟件則需要自定義多套sql映射文件,工作量大。
Hibernate
- 對象/關系映射能力強,數據庫無關性好,對于關系模型要求高的軟件(例如需求固定的定制化軟件)如果用hibernate開發可以節省很多代碼,提高效率。但是Hibernate的缺點是學習門檻高,要精通門檻更高,而且怎么設計O/R映射,在性能和對象模型之間如何權衡,以及怎樣用好Hibernate需要具有很強的經驗和能力才行。
---------------------
作者:C1Zer0WN
來源:CSDN
原文:https://blog.csdn.net/qq_36543562/article/details/113244030
版權聲明:本文為作者原創文章,轉載請附上博文鏈接!
內容解析By:CSDN,CNBLOG博客文章一鍵轉載插件