Présentation de la fonction Java Persistence API (JPA)

Vous pouvez utiliser trois fonctions JPA pour votre application. La fonction jpa-2.0 repose sur le projet open source Apache OpenJPA. Les fonctions jpa-2.1 et jpa-2.2 reposent sur le projet open source EclipseLink.

Open Liberty Pour obtenir les informations les plus récentes sur l'utilisation de JPA pour accéder aux données et les conserver dans une base de données pour les microservices, voir le document Accessing and persisting data in microservices guide.

jpa-2.0

Java™ Persistence API (JPA) 2.0 for WebSphere Application Server est construit sur le projet open source Apache OpenJPA 2.2.x .

Apache OpenJPA est une implémentation conforme des spécifications JPA 1.0 et 2.0. En utilisant OpenJPA comme implémentation de base, WebSphere® Application Server emploie des extensions pour fournir davantage de fonctions et d'utilitaires aux clients WebSphere Application Server . Comme JPA for WebSphere Application Server est construit à partir de OpenJPA,, toutes les fonctions, extensions et configurations de OpenJPA ne sont pas affectées par les extensions de WebSphere Application Server. Il n'est pas nécessaire d'apporter des modifications aux applications OpenJPA pour utiliser ces applications dans WebSphere Application Server.

JPA pour WebSphere Application Server ne se limite pas a assurer la compatibilité avec OpenJPA. Il comporte un jeu d'outils destiné au développement et au déploiement d'application. Les autres fonctions de JPA pour WebSphere Application Server incluent la prise en charge de DB2®Optim pureQuery Runtime, les optimisations DB2 , les intentions d'accès JPA, les fonctions de trace améliorées, les scripts de commande et les fichiers de messages traduits. Le fournisseur de JPA de ce produit est com.ibm.websphere.persistence.PersistenceProviderImpl.

Apache OpenJPA prend en charge l'utilisation de propriétés pour configurer l'environnement persistant. Vous pouvez spécifier des propriétés JPA pour WebSphere Application Server avec le préfixe openjpa ou wsjpa . Vous pouvez mélanger les préfixes openjpa et wsjpa comme vous le souhaitez pour obtenir un ensemble commun de propriétés. Les propriétés de configuration spécifiques wsjpa font exception à la règle car elles utilisent le préfixe wsjpa. Lorsqu'une propriété spécifique à JPA for WebSphere Application Serverest utilisée avec le préfixe openjpa , un message d'avertissement est consigné pour indiquer que la propriété incriminée est traitée comme une propriété wsjpa . Le contraire ne s'applique pas au préfixe openjpa. Dans ce cas, la propriété en infraction est ignorée.

Fonction stabilisée: la fonction jpa-2.0 est stabilisée. Vous pouvez continuer à utiliser la fonction jpa-2.0. Cependant, envisagez d'utiliser une fonction JPA plus récente.

jpa-2.1

Java Persistence API (JPA) 2.1 for WebSphere Application Server repose sur le projet open source EclipseLink . EclipseLink est l'implémentation de référence pour toutes les versions de la spécification JPA. Le fournisseur de JPA de ce produit est org.eclipse.persistence.jpa.PersistenceProvider.

La spécification JPA 2.1 a ajouté de nouvelles fonctions qui ne sont pas disponibles dans la spécification JPA 2.0. Ces fonctions incluent :

  • Génération de schéma
  • Méthodes de conversion de type
  • Diagrammes d'entités dans les requêtes et opérations de recherche
  • Contextes de persistance non synchronisés
  • Invocation de procédure mémorisée
  • Injection dans les classes d'écouteurs d'entités
  • Améliorations du JPQL
  • Améliorations de l'API Criteria
  • Mappage des requêtes natives

Pour plus de détails sur ces fonctions, reportez-vous à la spécification JPA 2.1 . Ce produit offre également un sous-ensemble des API EclipseLink. Pour plus de détails, voir la page de la fonction Liberty , Java Persistence API 2.1.

Remarque: JPA 2.1 est compatible en amont avec JPA 2.0.

jpa-2.2

Java Persistence API (JPA) 2.2 for WebSphere Application Server repose sur le projet open source EclipseLink . EclipseLink est l'implémentation de référence pour toutes les versions de la spécification JPA. Le fournisseur de JPA de ce produit est org.eclipse.persistence.jpa.PersistenceProvider.

Remarque: JPA 2.2 est compatible en amont avec JPA 2.1 et JPA 2.0.

Open Liberty Pour obtenir les informations les plus récentes sur l'utilisation de JPA pour accéder aux données et les conserver dans une base de données pour les microservices, voir le document Accessing and persisting data in microservices guide.

Compatibilité de la fonction JPA

jpa-2.0

La fonction jpa-2.0 est l'implémentation de la spécification JPA 2.0 et s'appuie sur Apache OpenJPA. Cette fonction appartient à la famille de technologie Java Platform, Enterprise Edition (Java EE) 6, mais elle est spéciale car elle est compatible avec d'autres fonctions Java EE 7. Par exemple, la fonction servlet-3.1, une fonction Java EE 7, est utilisée avec la fonction jpa-2.0. Ceci permet aux applications de rester avec le fournisseur JPA existant tout en utilisant les nouvelles fonctions de Java EE 7.

jpa-2.1

La fonction jpa-2.1 est l'implémentation de la spécification JPA 2.1 et s'appuie sur EclipseLink. Cette fonction est uniquement compatible avec les autres fonctions de Java EE 7. Si la fonction jpa-2.1 est utilisée avec d'autres fonctions de Java EE 6, l'erreur suivante est inscrite dans le fichier message.log.

CWWKF0033E : Les fonctions de singleton com.ibm.websphere.appserver.javaeeCompatible-7.0 et com.ibm.websphere.appserver.javaeeCompatible-6.0 ne peuvent pas être chargées en même temps.  Les fonctions configurées jpa-2.1 et servlet-3.0 incluent une ou plusieurs fonctions qui causent le conflit. Votre configuration n'est pas prise en charge. Mettez à jour le fichier server.xml afin de supprimer les fonctions incompatibles.