Pour que le profil Liberty prenne en charge une
application utilisant l'API JPA
(Java™ Persistence API), vous
devez ajouter la fonction jpa-2.0 ou
jpa-2.1 au fichier server.xml, en
fonction du niveau de spécification dont vous avez besoin. Vous devez également définir les contextes de persistance et les unités de persistance et
configurer l'accès au gestionnaire d'entité et à la fabrique de gestionnaire d'entité.
Pourquoi et quand exécuter cette tâche
![[8.5.5.6 ou ultérieure]](../ng_v8556.gif)
Deux fonctions JPA
sont disponibles dans le profil Liberty :
- La fonction jpa-2.0 permet aux
applications d'utiliser tout mécanisme de persistance Java gérée par l'application ou
le conteneur, écrit selon la spécification JPA 2.0. Le support repose sur Apache OpenJPA avec des extensions pour la prise en charge du modèle de programmation avec gestion par conteneur.
- La fonction jpa-2.1 permet aux
applications
d'utiliser tout mécanisme de persistance Java gérée par l'application
ou le conteneur, écrit selon la spécification JPA 2.1. La prise en
charge repose sur EclipseLink
Procédure
- Ajoutez la fonction
jpa-2.0 ou jpa-2.1 dans le
fichier server.xml.
- Ajoutez des définitions de contextes de persistance et d'unités de persistance
au fichier web.xml.
Exemple :
<persistence-context-ref>
<persistence-context-ref-name>example/em</persistence-context-ref-name>
<persistence-unit-name>ExamplePersistenceUnit</persistence-unit-name>
</persistence-context-ref>
<persistence-unit-ref>
<persistence-unit-ref-name>example/emf</persistence-unit-ref-name>
<persistence-unit-name>ExamplePersistenceUnit</persistence-unit-name>
</persistence-unit-ref>
- Configurez l'accès au gestionnaire d'entité.
Exemple :
Context ctx = new InitialContext();
UserTransaction tran = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
tran.begin();
EntityManager em = (EntityManager) ctx.lookup(java:comp/env/example/em");
Thing thing = new Thing();
em.persist(thing);
tran.commit();
- Configurez l'accès à la fabrique de gestionnaire d'entité.
Exemple :
Context ctx = new InitialContext();
EntityManagerFactory emf = (EntityManager) ctx.lookup(java:comp/env/example/emf");
EntityManager em = emf.createEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
Thing thing = new Thing();
em.persist(thing);
tx.commit();
int id = thing.getId();
em.close();