org.springframework.orm.jpa

## 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:
    `PersistenceContext`, `PersistenceContextType.TRANSACTION`, `JpaTransactionManager`, `ExtendedEntityManagerCreator`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `SharedEntityManagerCreator()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static EntityManager` | `createSharedEntityManager(EntityManagerFactory emf)` Create a transactional EntityManager proxy for the given EntityManagerFactory.
    `static EntityManager` | `createSharedEntityManager(EntityManagerFactory emf, Map<?,?> properties)` Create a transactional EntityManager proxy for the given EntityManagerFactory.
    `static EntityManager` | `createSharedEntityManager(EntityManagerFactory emf, Map<?,?> properties, boolean synchronizedWithTransaction)` Create a transactional EntityManager proxy for the given EntityManagerFactory.
    `static EntityManager` | `createSharedEntityManager(EntityManagerFactory emf, Map<?,?> properties, boolean synchronizedWithTransaction, Class<?>... entityManagerInterfaces)` Create a transactional EntityManager proxy for the given EntityManagerFactory.
    `static EntityManager` | `createSharedEntityManager(EntityManagerFactory emf, Map<?,?> properties, Class<?>... entityManagerInterfaces)` Create a transactional EntityManager proxy for the given EntityManagerFactory.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### SharedEntityManagerCreator

          public SharedEntityManagerCreator()

  - ### Method Detail

    - #### 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