簡體   English   中英

如果JPA實際上只是一個規范,那我們該怎么辦?

[英]If JPA is really only a specification, then how can we do?

在以下每個人的問題中

JPA和Hibernate有什么區別?

告訴我們JPA是規范,這是沒有Eclipselink或Hibernate的抽象

JPA javax.persistence.sth對嗎?

此外,我們可以使用諸如

javax.persistence.EntityManager.persiste javax.persistence.EntityManager.delete / remove

編輯

eclipselink和hibernate是否將自己的代碼放入這些包,這些類中???

JPA是一個規范,許多實現者提供遵循該規范的實現。

因此,如果按原樣使用JPA,則可以從一個或多個實現者中進行選擇,並且它應該“即插即用”。 換句話說,您不必更改代碼,因為實現將執行規范所承諾的工作。

---關於JPA和Hibernate之間的區別---

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

請注意,Hibernate還提供了一些JPA兼容性,如果您只使用Hibernate的JPA兼容部分,則您實際上是使用Hibernate提供的實現針對JPA編寫的。

有一個進行JPA開發的秘訣,可以很好地防止編寫非JPA(特定於實現)的代碼。

  1. 找到您要定位的JPA版本的JPA jar。
  2. 將該jar添加到編譯類路徑和運行時類路徑。
  3. 查找您要使用的JPA提供程序(休眠等)。
  4. 將該/那些罐子僅添加到運行時類路徑。

JPA是Java持久性API,由JCP(Java社區流程)作為JSR(Java規范請求)發布。

這是一種規范; 換句話說,例如接口,不包含任何實現。

每個對此規范感興趣的供應商(實施者)都需要按照規范文檔中的說明進行實施。

這是示例JPA 2.0規范

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM