Java 持續性 API 2.1 行為變更
如果您的應用程式已使用 jpa-2.0
特性,請讓現有的應用程式繼續使用 jpa-2.0
特性,以防發生任何移轉問題。 如果是新的應用程式,最好使用 jpa-2.1
特性,它可讓您充分利用 JPA 2.1 規格所提供的新特性。 如果您想讓現有的應用程式改用 jpa-2.1
特性,而不使用 jpa-2.0
特性,可能需要在移轉程序中調整應用程式。
jpa-2.0
與 jpa-2.1
之間的差異
請注意 jpa-2.0
和 jpa-2.1
特性之間的幾個主要差異。 請參閱下列各項:
- PersistenceProvider 類別名稱差異
jpa-2.0
- IBM® 提供者:
com.ibm.websphere.persistence.PersistenceProviderImpl
- OpenJPA 提供者:
org.apache.openjpa.persistence.PersistenceProviderImpl
- IBM® 提供者:
- 快取行為差異
jpa-2.0
:依預設會停用快取。 如果您的應用程式需要利用 L2 快取,必須明確啟用它。- 加強 / 編排差異
jpa-2.0
:OpenJPA 需要加強實體。 如需相關資訊,請參閱產品說明文件中的 JPA 2.0 的 JPA 實體加強功能 。
- 資料來源用法的差異
jpa-2.0
特性很少使用 non-jta-datasource,因此當您調整應用程式時,需要建立少量的 non-jta-datasource 連線。
OpenJPA 所提供的 JPA 2.1 特性
OpenJPA 是 JPA 2.0 提供者,它有一些特性的運作方式類似於 JPA 2.1 的新特性。 這表示,如果您現有的應用程式使用 jpa-2.0
特性,您想使用一些 JPA 2.1 特性,您不需要切換至 jpa-2.1
特性。 對於新特性,您倒是可以使用 OpenJPA 所提供的同等特性。 OpenJPA 所提供的部分 JPA 2.1 重要特性如下:
- 綱目產生
當使用這個特性時,您可以產生 DDL,或直接與資料庫互動,以根據 JPA 實體定義來定義表格綱目。 如需相關資訊,請參閱 JPA 2.1 規格第 9.4 節。
OpenJPA 同等特性: 綱目對映器
- 實體圖形
當使用這個特性時,您可以指定實體物件圖形的提取或處理方式。 如需相關資訊,請參閱 JPA 2.1 規格第 3.7 節。
OpenJPA 同等特性: FetchPlan 和 FetchGroup
- 儲存程序查詢
當使用這個特性時,您可以呼叫儲存在資料庫中的程序。 如需相關資訊,請參閱 JPA 2.1 規格第 3.10.17 節。
OpenJPA 同等特性: 查詢呼叫
- 基本屬性類型轉換
當使用這個特性時,您可以在屬性實體表示法與資料庫表示法之間,轉換基本類型屬性。 如需相關資訊,請參閱 JPA 2.1 規格第 3.8 節。
OpenJPA 同等特性: 外部化程式特性
- @Index 和 @ForeignKey 註釋
請參閱 JPA 2.1 規格的第 11.1.19 節與第 11.1.23 節。
OpenJPA 同等特性 :OpenJPA 的 @Index 和 @ForeignKey。
- EntityManager、Cache 的 unwrap 公用程式方法
請參閱 JPA 2.1 規格的第 3.1.1 節與第 7.10 節。
OpenJPA 同等特性: EntityManagerImpl.unwrap () 和 OpenJPAPersistence.cast ()。
- 對映原生 SQL 結果時的物件建構
請參閱 JPA 2.1 規格的第 3.10.16.2.2 節。
OpenJPA 同等特性: ResultShape 物件。