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