若要讓 Liberty 支援使用「Java™ 持續性 API (JPA)」的應用程式,視您需要的規格層次而定,請將 jpa-2.0 或 jpa-2.1 特性新增至 server.xml 檔。另外,您也需要定義持續性環境定義和持續性單位,以及配置實體管理程式和實體管理程式 Factory 的存取權。
關於這項作業
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();
- 配置實體管理程式 Factory 的存取權。
例如:
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();