org.springframework.orm.jpa

## Class EntityManagerFactoryAccessor

- java.lang.Object
- - org.springframework.orm.jpa.EntityManagerFactoryAccessor

- All Implemented Interfaces:
    Aware, BeanFactoryAware
  Direct Known Subclasses:
    HibernateJpaSessionFactoryBean, OpenEntityManagerInViewInterceptor, SharedEntityManagerBean

      public abstract class EntityManagerFactoryAccessor
      extends Object
      implements BeanFactoryAware

  Base class for any class that needs to access an EntityManagerFactory, usually in order to obtain an EntityManager. Defines common properties.
  Since:
    2.0
  Author:
    Juergen Hoeller
  See Also:
    `EntityManagerFactoryUtils`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected Log` | `logger` Logger available to subclasses

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `EntityManagerFactoryAccessor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected EntityManager` | `createEntityManager()` Obtain a new EntityManager from this accessor's EntityManagerFactory.
    `EntityManagerFactory` | `getEntityManagerFactory()` Return the JPA EntityManagerFactory that should be used to create EntityManagers.
    `Map<String,Object>` | `getJpaPropertyMap()` Allow Map access to the JPA properties to be passed to the persistence provider, with the option to add or override specific entries.
    `String` | `getPersistenceUnitName()` Return the name of the persistence unit to access the EntityManagerFactory for, if any.
    `protected EntityManager` | `getTransactionalEntityManager()` Obtain the transactional EntityManager for this accessor's EntityManagerFactory, if any.
    `void` | `setBeanFactory(BeanFactory beanFactory)` Retrieves an EntityManagerFactory by persistence unit name, if none set explicitly.
    `void` | `setEntityManagerFactory(EntityManagerFactory emf)` Set the JPA EntityManagerFactory that should be used to create EntityManagers.
    `void` | `setJpaProperties(Properties jpaProperties)` Specify JPA properties, to be passed into `EntityManagerFactory.createEntityManager(Map)` (if any).
    `void` | `setJpaPropertyMap(Map<String,Object> jpaProperties)` Specify JPA properties as a Map, to be passed into `EntityManagerFactory.createEntityManager(Map)` (if any).
    `void` | `setPersistenceUnitName(String persistenceUnitName)` Set the name of the persistence unit to access the EntityManagerFactory for.

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

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

- - ### Field Detail

    - #### logger

          protected final Log logger

      Logger available to subclasses

  - ### Constructor Detail

    - #### EntityManagerFactoryAccessor

          public EntityManagerFactoryAccessor()

  - ### Method Detail

    - #### setEntityManagerFactory

          public void setEntityManagerFactory(EntityManagerFactory emf)

      Set the JPA EntityManagerFactory that should be used to create EntityManagers.
      See Also:
        `EntityManagerFactory.createEntityManager()`, `EntityManagerFactory.createEntityManager(java.util.Map)`

    - #### getEntityManagerFactory

          public EntityManagerFactory getEntityManagerFactory()

      Return the JPA EntityManagerFactory that should be used to create EntityManagers.

    - #### setPersistenceUnitName

          public void setPersistenceUnitName(String persistenceUnitName)

      Set the name of the persistence unit to access the EntityManagerFactory for.

      This is an alternative to specifying the EntityManagerFactory by direct reference, resolving it by its persistence unit name instead. If no EntityManagerFactory and no persistence unit name have been specified, a default EntityManagerFactory will be retrieved through finding a single unique bean of type EntityManagerFactory.

      See Also:
        `setEntityManagerFactory(javax.persistence.EntityManagerFactory)`

    - #### getPersistenceUnitName

          public String getPersistenceUnitName()

      Return the name of the persistence unit to access the EntityManagerFactory for, if any.

    - #### setJpaProperties

          public void setJpaProperties(Properties jpaProperties)

      Specify JPA properties, to be passed into `EntityManagerFactory.createEntityManager(Map)` (if any).

      Can be populated with a String "value" (parsed via PropertiesEditor) or a "props" element in XML bean definitions.

      See Also:
        `EntityManagerFactory.createEntityManager(java.util.Map)`

    - #### setJpaPropertyMap

          public void setJpaPropertyMap(Map<String,Object> jpaProperties)

      Specify JPA properties as a Map, to be passed into `EntityManagerFactory.createEntityManager(Map)` (if any).

      Can be populated with a "map" or "props" element in XML bean definitions.

      See Also:
        `EntityManagerFactory.createEntityManager(java.util.Map)`

    - #### getJpaPropertyMap

          public Map<String,Object> getJpaPropertyMap()

      Allow Map access to the JPA properties to be passed to the persistence provider, with the option to add or override specific entries.

      Useful for specifying entries directly, for example via "jpaPropertyMap[myKey]".

    - #### setBeanFactory

          public void setBeanFactory(BeanFactory beanFactory)
                              throws BeansException

      Retrieves an EntityManagerFactory by persistence unit name, if none set explicitly. Falls back to a default EntityManagerFactory bean if no persistence unit specified.
      Specified by:
        `setBeanFactory` in interface `BeanFactoryAware`
      Parameters:
        `beanFactory` - owning BeanFactory (never `null`). The bean can immediately call methods on the factory.
      Throws:
        `BeansException` - in case of initialization errors
      See Also:
        `setPersistenceUnitName(java.lang.String)`

    - #### createEntityManager

          protected EntityManager createEntityManager()
                                               throws IllegalStateException

      Obtain a new EntityManager from this accessor's EntityManagerFactory.

      Can be overridden in subclasses to create specific EntityManager variants.

      Returns:
        a new EntityManager
      Throws:
        `IllegalStateException` - if this accessor is not configured with an EntityManagerFactory
      See Also:
        `EntityManagerFactory.createEntityManager()`, `EntityManagerFactory.createEntityManager(java.util.Map)`

    - #### getTransactionalEntityManager

          protected EntityManager getTransactionalEntityManager()
                                                         throws IllegalStateException

      Obtain the transactional EntityManager for this accessor's EntityManagerFactory, if any.
      Returns:
        the transactional EntityManager, or `null` if none
      Throws:
        `IllegalStateException` - if this accessor is not configured with an EntityManagerFactory
      See Also:
        `EntityManagerFactoryUtils.getTransactionalEntityManager(javax.persistence.EntityManagerFactory)`, `EntityManagerFactoryUtils.getTransactionalEntityManager(javax.persistence.EntityManagerFactory, java.util.Map)`