org.springframework.orm.jpa

## Class EntityManagerFactoryAccessor

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

All Implemented Interfaces:
  Aware, BeanFactoryAware

Direct Known Subclasses:
  HibernateJpaSessionFactoryBean, JpaAccessor, 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.

Not intended to be used directly. See `JpaAccessor`.

Since:
  2.0
Author:
  Juergen Hoeller
See Also:
  `JpaAccessor`, `EntityManagerFactoryUtils`

### Field Summary

Fields
`protected Log` `logger` Logger available to subclasses

### Constructor Summary

Constructors
Constructor and Description
`EntityManagerFactoryAccessor()`

### Method Summary

Methods
`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)`