![[8.5.5.6 o posterior]](../ng_v8556.gif)
Cambios del comportamiento de Java Persistence API 2.1
Si ya utiliza la característica jpa-2.0 para sus aplicaciones, le recomendamos encarecidamente que continúe utilizando la característica jpa-2.0 en sus aplicaciones existentes para evitar cualquier problema de migración. En el caso de las nuevas aplicaciones, le recomendamos que utilice la característica jpa-2.1, que permite beneficiarse de las nuevas características disponibles en la especificación JPA 2.1. Si desea cambiar sus aplicaciones existentes para que utilicen la característica jpa-2.1, en lugar de la característica jpa-2.0 es posible que tenga que ajustar su aplicación durante el proceso de migración.
Diferencias entre jpa-2.0 y jpa-2.1
Existen algunas diferencias importantes entre las características jpa-2.0 y jpa-2.1 que debe conocer:
- Nombre de la clase PersistenceProvider
- jpa-2.0
- Proveedor IBM®: com.ibm.websphere.persistence.PersistenceProviderImpl
- Proveedor OpenJPA: org.apache.openjpa.persistence.PersistenceProviderImpl
- jpa-2.1
- org.eclipse.persistence.jpa.PersistenceProvider
- Comportamiento de almacenamiento en memoria caché
-
jpa-2.0: De forma predeterminada, el almacenamiento en memoria caché está inhabilitado. Si su aplicación necesita los beneficios de una memoria caché L2, debe habilitarla de forma explícita.
-
jpa-2.1: De forma predeterminada, el proveedor EclipseLink tiene habilitadas la memoria caché L2 y QueryCache. Debe asegurarse de que esta sea la mejor opción para sus aplicaciones. Si está ejecutando en un entorno distribuido, tal como un clúster, debe inhabilitar la memoria caché o comprender que los diferentes nodos pueden tener diferentes datos.
- Diferencias entre mejoras/entramados
-
jpa-2.0: OpenJPA requiere mejoras en las entidades. Consulte la documentación sobre las mejoras de las entidades JPA para obtener más información.
-
jpa-2.1: EclipseLink funciona con entidades no mejoradas. WebSphere Application Server da soporte a las mejoras estáticas.
Es posible que algunas características no estén disponibles, tal como la carga con retardo y algunas mejoras de rendimiento.
- Si las clases de entidades se mejoran de forma estática para que utilicen el proveedor jpa-2.0 (OpenJPA), se deben volver a compilar las clases antes de utilizar el proveedor jpa-2.1.
- Diferencias de uso de orígenes de datos.
-
La característica jpa-2.0 utiliza raramente non-jta-datasource, por lo tanto, se necesitan pocas conexiones non-jta-datasource cuando se ajusta una aplicación.
En jpa-2.1 se utiliza una conexión non-jta-datasource durante la lectura de los datos cuando una transacción no está activa. Esto significa que el tamaño de las agrupaciones de conexiones non-jta-datasource debe ser mayor cuando se utiliza esta característica.
Para obtener más información acerca de las diferencias entre los dos proveedores de JPA, consulte la Página de la guía de migración de OpenJPA -> EclipseLink.
Características JPA 2.1 disponibles en OpenJPA
OpenJPA, el proveedor de JPA 2.0, tienen características que funcionan de forma similar a las nuevas características JPA 2.1. Esto significa que si tiene una aplicación que utiliza la característica jpa-2.0 y desea utilizar algunas de las nuevas características JPA 2.1, no es necesario que cambie a la característica jpa-2.1. En su lugar, puede utilizar el equivalente de la nueva característica que proporciona OpenJPA. Algunas de las características clave de JPA 2.1 disponibles en OpenJPA son:
- Generación de esquemas
-
Esta característica le permite generar DDL o interactuar directamente con la base de datos para definir los esquemas de tablas basados en la definición de entidades JPA. Para obtener más información, consulte la sección 9.4 de la especificación JPA 2.1.
Característica OpenJPA equivalente: Correlacionador de esquemas
- Gráficos de entidades
-
Esta característica le permite especificar la captura o proceso de un gráfico para objetos de entidades. Para obtener más información, consulte la sección 3.7 de la especificación JPA 2.1.
Característica OpenJPA equivalente: FetchPlan y FetchGroup
- Consultas de procedimientos almacenados
Esta característica le permite invocar procedimientos almacenados en bases de datos. Para obtener más información, consulte la sección 3.10.17 de la especificación JPA 2.1.
Característica OpenJPA equivalente: Invocación de consultas
- Conversión de tipos de atributos básicos
-
Esta característica le permite convertir los tipos de atributos básicos entre una representación de entidad de atributo y una representación de base de datos. Para obtener más información, consulte la sección 3.8 de la especificación JPA 2.1.
Característica OpenJPA equivalente: Característica Externalizer
- Anotaciones @Index y @ForeignKey
-
Consulte las secciones 11.1.19 y 11.1.23 de la especificación JPA 2.1.
Característica OpenJPA equivalente: @Index y @ForeignKey de OpenJPA
- Métodos del programa de utilidad Unwrap para EntityManager y memoria caché
-
Consulte las secciones 3.1.1 y 7.10 de la especificación JPA 2.1.
Características OpenJPA equivalentes: EntityManagerImpl.unwrap() y OpenJPAPersistence.cast()
- Creación de objetos durante la correlación de resultados desde SQL nativo
-
Consulte la sección 3.10.16.2.2 de la especificación JPA 2.1.
Característica OpenJPA equivalente: Objeto ResultShape