为允许 Liberty 支持使用 Java™ Persistence API (JPA)
的应用程序,应根据您需要的规范将 jpa-2.0 或 jpa-2.1 功能部件添加至 server.xml 文件。您还需要定义持久性上下文和持久性单元,以及配置对实体管理器和实体管理器工厂的访问权。
关于此任务
Liberty 中有两个 JPA 功能部件:
- jpa-2.0 功能部件为应用程序(使用依照 JPA 2.0 规范编写的应用程序管理及容器管理的 JPA)提供支持。此支持基于 Apache OpenJPA,提供扩展来支持容器管理的编程模型。
- jpa-2.1 功能部件为应用程序(使用依照 JPA 2.1 规范编写的应用程序管理及容器管理的 JPA)提供支持。该支持基于 EclipseLink。
有关使用 WebSphere Developer Tools 开发 JPA
应用程序的信息,请参阅开发 JPA 应用程序。
过程
- 将 jpa-2.0 或 jpa-2.1 功能部件添加至 server.xml 文件。
- 将持久性上下文和持久性单元定义添加到 web.xml 文件。
例如:
<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>
- 配置对实体管理器的访问权。
例如:
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();
- 配置对实体管理器工厂的访问权。
例如:
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();