Class ExtendedEntityManagerCreator
EntityManager
 proxies that follow the JPA spec's semantics for "extended" EntityManagers.
 Supports several different variants of "extended" EntityManagers:
 in particular, an "application-managed extended EntityManager", as defined
 by EntityManagerFactory.createEntityManager(),
 as well as a "container-managed extended EntityManager", as defined by
 PersistenceContextType.EXTENDED.
 
The original difference between "application-managed" and "container-managed"
 was the need for explicit joining of an externally managed transaction through
 the EntityManager.joinTransaction() method in the "application" case
 versus the automatic joining on each user-level EntityManager operation in the
 "container" case. As of JPA 2.1, both join modes are available with both kinds of
 EntityManagers, so the difference between "application-" and "container-managed"
 is now primarily in the join mode default and in the restricted lifecycle of a
 container-managed EntityManager (i.e. tied to the object that it is injected into).
- Since:
- 2.0
- Author:
- Juergen Hoeller, Rod Johnson, Mark Paluch
- See Also:
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionstatic EntityManagercreateApplicationManagedEntityManager(EntityManager rawEntityManager, EntityManagerFactoryInfo emfInfo) Create an application-managed extended EntityManager proxy.static EntityManagercreateApplicationManagedEntityManager(EntityManager rawEntityManager, EntityManagerFactoryInfo emfInfo, boolean synchronizedWithTransaction) Create an application-managed extended EntityManager proxy.static EntityManagerCreate a container-managed extended EntityManager proxy.static EntityManagercreateContainerManagedEntityManager(EntityManagerFactory emf, Map<?, ?> properties) Create a container-managed extended EntityManager proxy.static EntityManagercreateContainerManagedEntityManager(EntityManagerFactory emf, Map<?, ?> properties, boolean synchronizedWithTransaction) Create a container-managed extended EntityManager proxy.static EntityManagercreateContainerManagedEntityManager(EntityManager rawEntityManager, EntityManagerFactoryInfo emfInfo) Create a container-managed extended EntityManager proxy.
- 
Constructor Details- 
ExtendedEntityManagerCreatorpublic ExtendedEntityManagerCreator()
 
- 
- 
Method Details- 
createApplicationManagedEntityManagerpublic static EntityManager createApplicationManagedEntityManager(EntityManager rawEntityManager, EntityManagerFactoryInfo emfInfo) Create an application-managed extended EntityManager proxy.- Parameters:
- rawEntityManager- the raw EntityManager to decorate
- emfInfo- the EntityManagerFactoryInfo to obtain the JpaDialect and PersistenceUnitInfo from
- Returns:
- an application-managed EntityManager that can join transactions but does not participate in them automatically
 
- 
createApplicationManagedEntityManagerpublic static EntityManager createApplicationManagedEntityManager(EntityManager rawEntityManager, EntityManagerFactoryInfo emfInfo, boolean synchronizedWithTransaction) Create an application-managed extended EntityManager proxy.- Parameters:
- rawEntityManager- the raw EntityManager to decorate
- emfInfo- the EntityManagerFactoryInfo to obtain the JpaDialect and PersistenceUnitInfo from
- synchronizedWithTransaction- whether to automatically join ongoing transactions (according to the JPA 2.1 SynchronizationType rules)
- Returns:
- an application-managed EntityManager that can join transactions but does not participate in them automatically
- Since:
- 4.0
 
- 
createContainerManagedEntityManagerpublic static EntityManager createContainerManagedEntityManager(EntityManager rawEntityManager, EntityManagerFactoryInfo emfInfo) Create a container-managed extended EntityManager proxy.- Parameters:
- rawEntityManager- the raw EntityManager to decorate
- emfInfo- the EntityManagerFactoryInfo to obtain the JpaDialect and PersistenceUnitInfo from
- Returns:
- a container-managed EntityManager that will automatically participate in any managed transaction
 
- 
createContainerManagedEntityManagerCreate a container-managed extended EntityManager proxy.- Parameters:
- emf- the EntityManagerFactory to create the EntityManager with. If this implements the EntityManagerFactoryInfo interface, the corresponding JpaDialect and PersistenceUnitInfo will be detected accordingly.
- Returns:
- a container-managed EntityManager that will automatically participate in any managed transaction
- See Also:
 
- 
createContainerManagedEntityManagerpublic static EntityManager createContainerManagedEntityManager(EntityManagerFactory emf, @Nullable Map<?, ?> properties) Create a container-managed extended EntityManager proxy.- Parameters:
- emf- the EntityManagerFactory to create the EntityManager with. If this implements the EntityManagerFactoryInfo interface, the corresponding JpaDialect and PersistenceUnitInfo will be detected accordingly.
- properties- the properties to be passed into the- createEntityManagercall (may be- null)
- Returns:
- a container-managed EntityManager that will automatically participate in any managed transaction
- See Also:
 
- 
createContainerManagedEntityManagerpublic static EntityManager createContainerManagedEntityManager(EntityManagerFactory emf, @Nullable Map<?, ?> properties, boolean synchronizedWithTransaction) Create a container-managed extended EntityManager proxy.- Parameters:
- emf- the EntityManagerFactory to create the EntityManager with. If this implements the EntityManagerFactoryInfo interface, the corresponding JpaDialect and PersistenceUnitInfo will be detected accordingly.
- properties- the properties to be passed into the- createEntityManagercall (may be- null)
- synchronizedWithTransaction- whether to automatically join ongoing transactions (according to the JPA 2.1 SynchronizationType rules)
- Returns:
- a container-managed EntityManager that expects container-driven lifecycle management but may opt out of automatic transaction synchronization
- Since:
- 4.0
- See Also:
 
 
-