Cambios del comportamiento de Java Persistence API 2.1

Si ya utiliza la característica jpa-2.0 para las aplicaciones, siga utilizando la característica jpa-2.0 para las aplicaciones existentes para evitar cualquier problema de migración. Para aplicaciones nuevas, lo mejor es utilizar la característica jpa-2.1, que le permite sacar partido de las nuevas características que están 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

Conozca algunas diferencias importantes entre las características jpa-2.0 y jpa-2.1. Consulte lo siguiente:

Diferencias de nombre de 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
Diferencias del comportamiento del 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, como un clúster, tendrá que inhabilitar la memoria caché o comprender que los distintos nodos pueden tener datos diferentes.

Diferencias entre mejoras/entramados

jpa-2.0: OpenJPA requiere mejoras en las entidades. Si desea más información, consulte Mejora de entidades JPA para JPA 2.0 en la documentación del producto.

jpa-2.1: EclipseLink funciona con entidades no mejoradas. WebSphere Application Server da soporte a las mejoras estáticas.

Algunas características podrían no estar disponibles como, por ejemplo, una carga poco activa y algunas mejoras de rendimiento.

  • Si las clases de entidad se han mejorado de forma estática para su uso con el proveedor jpa-2.0 (OpenJPA), las clases se deben volver a compilar antes de utilizar el proveedor jpa-2.1.
  • Si Liberty se ha configurado para utilizar la característica jpa-2.1 y las entidades se mejoran utilizando la mejora OpenJPA, se lanza el error siguiente:
    java.lang.NoClassDefFoundError: 
    org.apache.openjpa.enhance.PersistenceCapable.
  • El NoClassDefFoundError se produce porque las clases OpenJPA no están disponibles para el servidor durante el tiempo de ejecución cuando el servidor Liberty está configurado para utilizar jpa-2.1.
    • Para resolver este problema, vuelva a compilar la aplicación y asegúrese de que las entidades no se han ampliado con el ampliador OpenJPA. No amplíe ninguna entidad, o amplíe las entidades utilizando la ampliación EclipseLink, en lugar de la ampliación OpenJPA.
    • De forma alternativa, deje las entidades en su estado ampliado y reconfigure Liberty para utilizar la característica jpa-2.0. El resultado es una pérdida parcial de funciones de 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.

jpa-2.1 utiliza una conexión no de origen de datos jta cuando lee datos y 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 existente que utiliza la característica jpa-2.0 y desea utilizar algunas de las características JPA 2.1, no tiene que conmutar 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

Con esta característica, puede generar DDL o interactuar directamente con las base de datos para definir esquemas de tabla basándose en la definición de entidad JPA. Si desea 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

Con esta característica, puede especificar si captar o procesar un gráfico de objetos de entidad. 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

Con esta característica, puede invocar procedimientos que están almacenados en bases de datos. Si desea 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 tipo de atributo básico

Con esta característica, puede convertir entre una representación de entidad de atributo y la representación de base de datos para atributos de tipo básico. 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.


Icono que indica el tipo de tema Tema de concepto



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=cwlp_jpa21_behavior
Nombre de archivo:cwlp_jpa21_behavior.html