Spring Data JPA、MyBatis還有Hibernate有什么區別


原文:https://www.imooc.com/article/19754?block_id=tuijian_wz

Spring Data JPA、MyBatis還有Hibernate有什么區別

2017-08-06 16:32:29 9459瀏覽
 字號

Spring Data JPA 可以理解為 JPA 規范的再次封裝抽象,底層還是使用了 Hibernate 的 JPA 技術實現。要說差異,主要是比較的是 MyBatis 和 Hibernate。

性能考慮

由於 Hibernate 比 MyBatis 抽象封裝的程度更高,理論上單個語句之心的性能會低一點(所有的框架都是一樣,排除算法上的差異,越是底層,執行效率越高)。

但 Hibernate 會設置緩存,對於重復查詢有一定的優化,而且從編碼效率來說,Hibernate 的編碼效果肯定是會高一點的。所以,從整體的角度來看性能的話,其實兩者不能完全說誰勝誰劣。

從 ORM 角度考慮

Hibernate 是完備的 ORM 框架,是符合 JPA 規范的,但 MyBatis 不是。MyBatis 比單純寫 JDBC 肯定是方便一點,但無可避免還是要寫SQL,且無法做到跨數據庫 。Hibernate 使用 JPA 就可以無需考慮數據庫的兼容性問題。

使用 Hibernate 的一個難點是,如何來設計對象之間的關系。如果是關系型數據庫的話,表和表是通過外鍵來進行關聯的。而在 ORM 中,則需要從面向對象的角度出發,來設計對象之間的關聯關系。這個是需要思路上做一個轉變的。

與 Spring 的集成角度考慮

Spring 以及 Spring Boot 官方都沒有針對 MyBatis 有具體的支持,但對 Hibernate 的集成一直是有的。

但這並不表明 MyBatis 無法與 Spring Boot 集成,畢竟現在互聯網企業,還是很流行使用MyBatis 和 Spring 。MyBatis 官方社區自身也是有 對 Spring \ Spring boot 集成做支持的,所以在技術上,兩者都不存在問題。相關框架可以見 https://github.com/mybatis/spring 和https://github.com/mybatis/spring-boot-starter 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM