Class SharedEntityManagerCreator

java.lang.Object
org.springframework.orm.jpa.SharedEntityManagerCreator

public abstract class SharedEntityManagerCreator extends Object
Delegate for creating a shareable JPA EntityManager reference for a given EntityManagerFactory.

A shared EntityManager will behave just like an EntityManager fetched from an application server's JNDI environment, as defined by the JPA specification. It will delegate all calls to the current transactional EntityManager, if any; otherwise it will fall back to a newly created EntityManager per operation.

For a behavioral definition of such a shared transactional EntityManager, see PersistenceContextType.TRANSACTION and its discussion in the JPA spec document. This is also the default being used for the annotation-based PersistenceContext.type().

Since:
2.0
Author:
Juergen Hoeller, Rod Johnson, Oliver Gierke, Mark Paluch, Sam Brannen
See Also:
  • Constructor Details

    • SharedEntityManagerCreator

      public SharedEntityManagerCreator()
  • Method Details

    • createSharedEntityManager

      public static EntityManager createSharedEntityManager(EntityManagerFactory emf)
      Create a transactional EntityManager proxy for the given EntityManagerFactory.
      Parameters:
      emf - the EntityManagerFactory to delegate to.
      Returns:
      a shareable transaction EntityManager proxy
    • createSharedEntityManager

      public static EntityManager createSharedEntityManager(EntityManagerFactory emf, @Nullable Map<?,?> properties)
      Create a transactional EntityManager proxy for the given EntityManagerFactory.
      Parameters:
      emf - the EntityManagerFactory to delegate to.
      properties - the properties to be passed into the createEntityManager call (may be null)
      Returns:
      a shareable transaction EntityManager proxy
    • createSharedEntityManager

      public static EntityManager createSharedEntityManager(EntityManagerFactory emf, @Nullable Map<?,?> properties, boolean synchronizedWithTransaction)
      Create a transactional EntityManager proxy for the given EntityManagerFactory.
      Parameters:
      emf - the EntityManagerFactory to delegate to.
      properties - the properties to be passed into the createEntityManager call (may be null)
      synchronizedWithTransaction - whether to automatically join ongoing transactions (according to the JPA 2.1 SynchronizationType rules)
      Returns:
      a shareable transaction EntityManager proxy
      Since:
      4.0
    • createSharedEntityManager

      public static EntityManager createSharedEntityManager(EntityManagerFactory emf, @Nullable Map<?,?> properties, Class<?>... entityManagerInterfaces)
      Create a transactional EntityManager proxy for the given EntityManagerFactory.
      Parameters:
      emf - the EntityManagerFactory to obtain EntityManagers from as needed
      properties - the properties to be passed into the createEntityManager call (may be null)
      entityManagerInterfaces - the interfaces to be implemented by the EntityManager. Allows the addition or specification of proprietary interfaces.
      Returns:
      a shareable transactional EntityManager proxy
    • createSharedEntityManager

      public static EntityManager createSharedEntityManager(EntityManagerFactory emf, @Nullable Map<?,?> properties, boolean synchronizedWithTransaction, Class<?>... entityManagerInterfaces)
      Create a transactional EntityManager proxy for the given EntityManagerFactory.
      Parameters:
      emf - the EntityManagerFactory to obtain EntityManagers from as needed
      properties - the properties to be passed into the createEntityManager call (may be null)
      synchronizedWithTransaction - whether to automatically join ongoing transactions (according to the JPA 2.1 SynchronizationType rules)
      entityManagerInterfaces - the interfaces to be implemented by the EntityManager. Allows the addition or specification of proprietary interfaces.
      Returns:
      a shareable transactional EntityManager proxy
      Since:
      4.0