1. 程式人生 > >Spring Data JPA Vs Hibernate JPA Vs JPA

Spring Data JPA Vs Hibernate JPA Vs JPA

2017年 html block lin sel ESS api 使用 部分

前言

從文章的標題,就可以清晰地了解到,本文是來辨析三個容易將新手弄糊塗的技術名詞。如果,你一眼看過去就知道這三個名詞的區別及關系,那麽,這篇文章你可以不用繼續讀下去了;除非,你是想要看看我有什麽解釋的不對,來糾錯的(來找茬,哈哈),也歡迎留言。

名詞解釋

  • JPA(Java Persistence API,Java持久化API),它是一個關於如何處理對象關系映射(object-relational mappings)的規範;即,定義了映射Java中的Object到關系數據庫Table的標準流程。
  • Hibernate JPA,它實現了JPA規範,是JPA規範的廠商(想想JDBC規範和MySQL數據庫廠商的關系,JPA和Hibernate也是這麽一種關系)。

    除了Hibernate這個廠商,EclipseLink也是一個比較流行的JPA廠商。

  • Spring Data JPA,它是JPA規範的一個數據訪問抽象;Spring Data旨在提供一種一致的數據訪問模型,用於訪問來自不同存儲類型的數據。

JPA 背景

在引入EJB 3.0規範之前,許多企業級Java開發人員使用由持久化框架(例如Hibernate)或數據訪問對象(DAO)提供的輕量級持久化對象,來代替實體bean(EJB的一種)。 這是因為在以前的EJB規範中,實體bean需要太多復雜的代碼和繁重的資源占用,並且由於bean和DAO對象或持久化框架之間的源代碼中的互連和依賴性,使得它們只能在Java EE應用程序服務器中使用。 因此,最初在第三方持久性框架中提供的許多功能都被合並到Java Persistence API中,並且從2006年開始,像Hibernate(版本3.2)和TopLink Essentials這樣的項目已經實現Java Persistence API規範。

JPA 編年史

  • 2006年5月, JPA 1.0 規範作為 JCP JSR 220 的一部分最終被發布。
  • 2009年12月,JPA 2.0 規範發布(JSR 317,Java EE 6 平臺,依賴於 JPA 2.0。)
  • 2013年4月, JPA 2.1 規範發布(JSR 338,Java EE 7 平臺,依賴於 JPA 2.1。)
  • 2017年6月, JPA 2.2 規範發布(JSR 338)

參考資料

  • Java Persistence API,維基百科定義
  • Spring Data JPA,Spring官方介紹
  • What is the difference between Hibernate and Spring Data JPA
  • JPA 2.2改進了易用性
  • Java Persistence API specification,官方GitHub存檔
  • JPA and Hibernate in 10 Steps with Spring Boot and H2
  • JPA與Hibernate的關系

Spring Data JPA Vs Hibernate JPA Vs JPA