Damit Liberty eine Anwendung unterstützt, die Java™ Persistence API (JPA) verwendet, nehmen Sie das Feature jpa-2.0, jpa-2.1 oder jpaContainer-2.1 in die Datei server.xml auf, je nachdem, welche Spezifikationsstufe Sie verwenden. Sie müssen außerdem Persistenzkontexte und Persistenzeinheiten definieren und den Zugriff auf den EntityManager und die EntityManagerFactory konfigurieren.
Vorbereitende Schritte
Diese Task setzt voraus, dass Sie einen
Liberty-Server erstellt haben, in dem eine Anwendung implementiert werden soll, die JPA verwendet. Weitere Informationen hierzu finden Sie unter
Liberty-Server manuell erstellen.
Informationen zu diesem Vorgang
Die folgenden JPA-Features sind in
Liberty verfügbar:
- Das Feature jpa-2.0 bietet Unterstützung für Anwendungen, die eine gemäß der Spezifikation JPA 2.0 geschriebene anwendungs- und containergesteuerte JPA verwenden. Die Unterstützung basiert auf Apache OpenJPA mit Erweiterungen für die Unterstützung des containergesteuerten Programmiermodells.
- Das Feature jpa-2.1 bietet Unterstützung für Anwendungen, die eine gemäß der Spezifikation JPA 2.1 geschriebene anwendungs- und containergesteuerte JPA verwenden. Die Unterstützung basiert auf EclipseLink. Wenn der integrierte
EclipseLink-JPA-Provider nicht verwendet wird, können Sie stattdessen das Feature
jpaContainer-2.1 verwenden, um das Serverlaufzeitimage zu minimieren.
Das Feature jpaContainer-2.1 bietet Unterstützung für Anwendungen, die eine gemäß der Spezifikation JPA 2.1 geschriebene anwendungs- und containergesteuerte JPA verwenden. Dieses Feature enthält keinen integrierten JPA-Provider. Der
Benutzer muss einen JPA-Provider über eine gemeinsam genutzte Bibliothek, die globale Bibliothek oder eingebettet in der Anwendung bereitstellen.
Informationen zum Entwickeln von JPA-Anwendungen mit WebSphere Developer Tools finden Sie unter JPA-Anwendungen entwickeln.
Vorgehensweise
Nehmen Sie das Feature jpa-2.0, jpa-2.1 oder jpaContainer-2.1 in die Datei server.xml auf.
- Nehmen Sie einen Persistenzkontext und eine Persistenzeinheit in die Datei
web.xml auf.
Beispiel:
<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>
- Konfigurieren Sie den Zugriff auf den EntityManager.
Beispiel:
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();
- Konfigurieren Sie den Zugriff auf die EntityManagerFactory.
Beispiel:
Context ctx = new InitialContext();
EntityManagerFactory emf = (EntityManagerFactory) 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();
Wenn Sie das Feature jpaContainer-2.1 verwenden, machen Sie die JPA-Provider-JAR-Datei verfügbar. Wählen Sie eine der folgenden Optionen aus:
- Speichern Sie die JAR-Dateien des JPA-Providers an der Position der globalen Bibliothek, um sie allen Anwendungen verfügbar zu machen.
- Aktualisieren Sie die Serverkonfiguration, um die JAR-Dateien des JPA-Providers der Anwendung als gemeinsam genutzte Bibliothek bereitzustellen.
Führen Sie z. B. die folgenden Schritte aus:
Konfigurieren Sie in Ihrer Serverkonfigurationsdatei eine gemeinsam genutzte Bibliothek für den erforderlichen JPA-Persistenzprovider. Stellen Sie die Bibliothek den Anwendungen zur Verfügung, die sie verwenden. Im folgenden
Beispiel werden die minimal erforderlichen JAR-Dateien beschrieben, um EclipseLink als JPA 2.1-Provider ohne Erweiterung zu verwenden.
Die folgenden JAR-Dateien können ebenfalls eingeschlossen werden, um EclipseLink-Erweiterungen zu nutzen: - org.eclipse.persistence.dbws.jar
- org.eclipse.persistence.moxy.jar
<library id="eclipselink">
<file name="${server.config.dir}/jpa/org.eclipse.persistence.asm.jar/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.core.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.jpa.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.antlr.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.jpa.jpql.jar"/>
<file name="${server.config.dir}/jpa/org.eclipse.persistence.jpa.modelgen.jar"/>
</library>
<application location="myApp.war">
<classloader commonLibraryRef="eclipselink"/>
</application>
Wenn Sie
Hibernate als JPA-Provider verwenden möchten, schließen Sie stattdessen die folgenden JAR-Dateien in die <library>-Konfiguration ein.
<library id="hibernate">
<file name="${server.config.dir}/hibernate/antlr-2.7.7.jar"/>
<file name="${server.config.dir}/hibernate/classmate-1.3.0.jar"/>
<file name="${server.config.dir}/hibernate/dom4j-1.6.1.jar"/>
<file name="${server.config.dir}/hibernate/hibernate-commons-annotations-5.0.1.Final.jar"/>
<file name="${server.config.dir}/hibernate/hibernate-core-5.2.6.Final.jar"/>
<file name="${server.config.dir}/hibernate/javassist-3.20.0-GA.jar"/>
<file name="${server.config.dir}/hibernate/jboss-logging-3.3.0.Final.jar"/>
</library>
- Wählen Sie eine der folgenden Methoden aus, um die JPA-Providerklasse anzugeben:
- Konfigurieren Sie den Standardpersistenzprovider über das JPA-Element in der Serverkonfiguration. Diese Konfiguration überschreibt alle
PersistenceProvider-Services, die von <bell>-Elementen erkannt werden:
<jpa defaultPersistenceProvider="org.eclipse.persistence.jpa.PersistenceProvider"/>
Verwenden Sie für Hibernate Folgendes:
<jpa defaultPersistenceProvider="org.hibernate.jpa.HibernatePersistenceProvider"/>
- Konfigurieren Sie bei der Verwendung des Features jpaContainer-2.1 das Feature "bells-1.0" in der Serverkonfiguration und fügen Sie ein Bell-Feature für die gemeinsam genutzte Bibliothek hinzu.
Die gemeinsam genutzte Bibliothek lokalisiert die JPA-Providerklasse automatisch und verwendet sie als JPA-Standardpersistenzprovider. Diese Konfiguration überschreibt das
über das JPA-Element konfigurierte Attribut defaultPersistenceProvider.
<featureManager> <feature>jpaContainer-2.1</feature>
<feature>bells-1.0</feature>
...
</featureManager>
<bell libraryRef="eclipselink"/>
- Geben Sie die JPA-Persistenzproviderklasse in der Datei persistence.xml an. Diese Klasse hat Vorrang vor der Konfiguration der Persistenzeinheit in der Datei server.xml
(Element <jpa> oder <bell>-Elemente).
<persistence-unit name="MY_PERSISTENCE_UNIT">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
...
</persistence-unit>