To enable Liberty to support an application
that uses the Java™ Persistence
API (JPA), you add the jpa-2.0 or jpa-2.1 feature
to the server.xml file, depending on which specification
level you need. You also need to define persistence contexts and persistence
units, and configure access to the entity manager and entity manager
factory.
Before you begin
This task assumes that you have created a Liberty
server, on which you want to deploy an application that uses JPA.
See
Creating a Liberty server manually.
About this task
![[8.5.5.6 or later]](../ng_v8556.gif)
There are two JPA features available
in Liberty:
- The jpa-2.0 feature provides support for applications
that use application-managed and container-managed JPA written to
the JPA 2.0 specification. The support is built on Apache OpenJPA
with extensions to support the container-managed programming model.
- The jpa-2.1 feature provides support for applications
that use application-managed and container-managed JPA written to
the JPA 2.1 specification. The support is built on EclipseLink
For information about developing JPA applications by using WebSphere Developer Tools, see Developing JPA applications.
Procedure
- Add the jpa-2.0 or jpa-2.1 feature
to the server.xml file.
- Add persistence context and persistence unit definitions
to the web.xml file.
For example:
<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>
- Configure access to the entity manager.
For
example:
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();
- Configure access to the entity manager factory.
For
example:
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();