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

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

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

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

Spring Data JPA 能夠理解爲 JPA 規範的再次封裝抽象,底層仍是使用了 Hibernate 的 JPA 技術實現。要說差別,主要是比較的是 MyBatis 和 Hibernate。github

性能考慮

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

但 Hibernate 會設置緩存,對於重複查詢有必定的優化,並且從編碼效率來講,Hibernate 的編碼效果確定是會高一點的。因此,從總體的角度來看性能的話,其實二者不能徹底說誰勝誰劣。spring

從 ORM 角度考慮

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

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

與 Spring 的集成角度考慮

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

但這並不代表 MyBatis 沒法與 Spring Boot 集成,畢竟如今互聯網企業,仍是很流行使用MyBatis 和 Spring 。MyBatis 官方社區自身也是有 對 Spring \ Spring boot 集成作支持的,因此在技術上,二者都不存在問題。相關框架能夠見 https://github.com/mybatis/spring 和https://github.com/mybatis/spring-boot-starter 。框架

相關文章
相關標籤/搜索