| = persistence-context |
| :index-group: JPA |
| :jbake-date: 2018-12-05 |
| :jbake-type: page |
| :jbake-status: published |
| |
| = Via annotation |
| |
| Both lookup and injection of an EntityManager can be configured via the |
| `@PersistenceContext` annotation. |
| |
| [source,java] |
| ---- |
| package org.superbiz; |
| |
| import javax.persistence.PersistenceContext; |
| import javax.persistence.EntityManager; |
| import javax.ejb.Stateless; |
| import javax.naming.InitialContext; |
| |
| @Stateless |
| @PersistenceContext(name = "myFooEntityManager", unitName = "foo-unit") |
| public class MyBean implements MyInterface { |
| |
| @PersistenceContext(unitName = "bar-unit") |
| private EntityManager myBarEntityManager; |
| |
| public void someBusinessMethod() throws Exception { |
| if (myBarEntityManager == null) throw new NullPointerException("myBarEntityManager not injected"); |
| |
| // Both can be looked up from JNDI as well |
| InitialContext context = new InitialContext(); |
| EntityManager fooEntityManager = (EntityManager) context.lookup("java:comp/env/myFooEntityManager"); |
| EntityManager barEntityManager = (EntityManager) context.lookup("java:comp/env/org.superbiz.MyBean/myBarEntityManager"); |
| } |
| } |
| ---- |
| |
| = Via xml |
| |
| The above `@PersistenceContext` annotation usage is 100% equivalent to the |
| following xml. |
| |
| [source,xml] |
| ---- |
| <persistence-context-ref> |
| <persistence-context-ref-name>myFooEntityManager</persistence-context-ref-name> |
| <persistence-unit-name>foo-unit</persistence-unit-name> |
| <persistence-context-type>Transaction</persistence-context-type> |
| </persistence-context-ref> |
| |
| <persistence-context-ref> |
| <persistence-context-ref-name>org.superbiz.calculator.MyBean/myBarEntityManager</persistence-context-ref-name> |
| <persistence-unit-name>bar-unit</persistence-unit-name> |
| <persistence-context-type>Transaction</persistence-context-type> |
| <injection-target> |
| <injection-target-class>org.superbiz.calculator.MyBean</injection-target-class> |
| <injection-target-name>myBarEntityManager</injection-target-name> |
| </injection-target> |
| </persistence-context-ref> |
| ---- |