为允许 Liberty 概要文件支持使用 Java™ Persistence API (JPA)
的应用程序,应根据您需要的规范将 jpa-2.0 或 jpa-2.1 功能部件添加至 server.xml 文件。您还需要定义持久性上下文和持久性单元,以及配置对实体管理器和实体管理器工厂的访问权。
关于此任务
![[8.5.5.6 或更高版本]](../ng_v8556.gif)
Liberty 概要文件上有两个可用 JPA 功能部件:
- jpa-2.0 功能部件为应用程序(使用依照 JPA 2.0 规范编写的应用程序管理及容器管理的 JPA)提供支持。该支持是以 Apache OpenJPA 为基础构建的,提供扩展来支持容器管理的编程模型。
- jpa-2.1 功能部件为应用程序(使用依照 JPA 2.1 规范编写的应用程序管理及容器管理的 JPA)提供支持。该支持是以 EclipseLink 为基础构建的。
过程
- 将 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 = (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();