Java Persistence 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:缺省情况下缓存被禁用。 如果应用程序需要使用二级高速缓存,那么必须显式启用二级高速缓存。- 增强功能/织入差别
jpa-2.0:OpenJPA 要求增强实体。 有关更多信息,请参阅产品文档中的 JPA 实体的增强功能 2.0 。
- 数据源用法差别
jpa-2.0功能部件以保守方式使用非 JTA 数据源,所以调整应用程序时需要的非 JTA 数据源连接极少。
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 等效功能部件: Schema Mapper
- 实体图形
使用此功能部件,可指定实体对象图形的访存或处理。 有关更多信息,请参阅 JPA 2.1 规范的 3.7 节。
OpenJPA 等效功能部件: FetchPlan 和 FetchGroup
- 存储过程查询
使用此功能,可调用数据库中存储的过程。 有关更多信息,请参阅 JPA 2.1 规范的 部分 3.10.17 。
OpenJPA 等效功能部件: 查询调用
- 基本属性类型转换
使用此功能部件,可在基本类型属性的属性实体表示与数据库表示之间转换。 有关更多信息,请参阅 JPA 2.1 规范的 3.8 节。
OpenJPA 等效功能部件: Externalizer 功能部件
- @Index 和 @ForeignKey 注释
请参阅 JPA 2.1 规范的 11.1.19 和 11.1.23 节。
OpenJPA 等效功能: OpenJPA's @Index和 @ForeignKey。
- EntityManager 的解包实用程序方法和高速缓存
请参阅 JPA 2.1 规范的 3.1.1 和 7.10 节。
OpenJPA 等效功能 : .unwrap() EntityManagerImpl 和 OpenJPAPersistence.cast()。
- 从本机 SQL 映射结果时的对象构造
请参阅 JPA 2.1 规范的 3.10.16.2.2 节。
OpenJPA 等效功能部件: ResultShape 对象。