2014-07-01 39 views

回答

2

JPA是一種規範,以及一些實現者的提供下面的說明書中的實施方式。

所以,如果你使用JPA,因爲它是爲了使用,你就可以從一個或多個實現者的選擇,它應該「插件和播放」的工作。換句話說,你不應該改變你的代碼,因爲實現將完成規範承諾的事情。

---至於JPA和Hibernate之間的差---

JPA是規範,但Hibernate是一個實現。如果您針對JPA編寫代碼,則可以輕鬆地在JPA兼容的實現之間進行更改;但是,如果您針對Hibernate編寫代碼,則需要更改您的數據庫訪問代碼。

注意,Hibernate也提供了一些JPA的兼容性,如果你照顧只使用Hibernate提供的JPA兼容的一部分,您可以有效地被使用Hibernate提供的實施對寫作JPA。

有做JPA的發展,在防止非JPA(實現特定的)的代碼被寫入作品相當不錯的一個receipe。

  1. 找到您要定位的JPA版本的JPA JAR。
  2. 將該jar添加到編譯類路徑和運行時類路徑中。
  3. 找到你想使用的JPA提供程序(Hibernate等)。
  4. 只將那些/這些罐子添加到運行時類路徑。
+0

非常感謝,但休眠有org.hibernate。會話,也可以在一些與你的單詞entityManager同時使用的hibernate教程中使用。那爲什麼是會議。我想知道Hibernate entitymanager的實現是建立在org.hibernate.session – merveotesi

+0

那麼,你必須選擇適合你需求的教程。如果您正在執行JPA,請選擇JPA教程。如果你在JPA之外的Hibernate綁定Hibernate教程。 –

0

JPA是由JCP(Java Community Process)作爲JSR(Java規範請求)發佈的Java持久性API。

這是一種規範的;換句話說就像界面一樣,沒有包含實現。

每個供應商(執行者)誰感興趣這個天賦需要實現因爲它規範文檔中說。

這裏是示例JPA 2.0 spec

相關問題