前言
從文章的標題,就可以清晰地了解到,本文是來辨析三個容易將新手弄糊涂的技術名詞。如果,你一眼看過去就知道這三個名詞的區(qū)別及關系,那么,這篇文章你可以不用繼續(xù)讀下去了;除非,你是想要看看我有什么解釋的不對,來糾錯的(來找茬,哈哈),也歡迎留言。
名詞解釋
- JPA(Java Persistence API,Java持久化API),它是一個關于如何處理對象關系映射(object-relational mappings)的規(guī)范;即,定義了映射Java中的Object到關系數(shù)據(jù)庫Table的標準流程。
- Hibernate JPA,它實現(xiàn)了JPA規(guī)范,是JPA規(guī)范的廠商(想想JDBC規(guī)范和MySQL數(shù)據(jù)庫廠商的關系,JPA和Hibernate也是這么一種關系)。
除了Hibernate這個廠商,EclipseLink也是一個比較流行的JPA廠商。
- Spring Data JPA,它是JPA規(guī)范的一個數(shù)據(jù)訪問抽象;Spring Data旨在提供一種一致的數(shù)據(jù)訪問模型,用于訪問來自不同存儲類型的數(shù)據(jù)。
JPA 背景
在引入EJB 3.0規(guī)范之前,許多企業(yè)級Java開發(fā)人員使用由持久化框架(例如Hibernate)或數(shù)據(jù)訪問對象(DAO)提供的輕量級持久化對象,來代替實體bean(EJB的一種)。 這是因為在以前的EJB規(guī)范中,實體bean需要太多復雜的代碼和繁重的資源占用,并且由于bean和DAO對象或持久化框架之間的源代碼中的互連和依賴性,使得它們只能在Java EE應用程序服務器中使用。 因此,最初在第三方持久性框架中提供的許多功能都被合并到Java Persistence API中,并且從2006年開始,像Hibernate(版本3.2)和TopLink Essentials這樣的項目已經(jīng)實現(xiàn)Java Persistence API規(guī)范。
JPA 編年史
- 2006年5月, JPA 1.0 規(guī)范作為 JCP JSR 220 的一部分最終被發(fā)布。
- 2009年12月,JPA 2.0 規(guī)范發(fā)布(JSR 317,Java EE 6 平臺,依賴于 JPA 2.0。)
- 2013年4月, JPA 2.1 規(guī)范發(fā)布(JSR 338,Java EE 7 平臺,依賴于 JPA 2.1。)
- 2017年6月, JPA 2.2 規(guī)范發(fā)布(JSR 338)