Class EntityManagerFactoryAccessor

java.lang.Object
org.springframework.orm.jpa.EntityManagerFactoryAccessor
All Implemented Interfaces:
Aware, BeanFactoryAware
Direct Known Subclasses:
OpenEntityManagerInViewInterceptor, SharedEntityManagerBean

public abstract class EntityManagerFactoryAccessor extends Object implements BeanFactoryAware
Base class for any class that needs to access a JPA EntityManagerFactory, usually in order to obtain a JPA EntityManager. Defines common properties.
Since:
2.0
Author:
Juergen Hoeller
See Also:
  • Field Details

    • logger

      protected final org.apache.commons.logging.Log logger
      Logger available to subclasses.
  • Constructor Details

    • EntityManagerFactoryAccessor

      public EntityManagerFactoryAccessor()
  • Method Details

    • setEntityManagerFactory

      public void setEntityManagerFactory(@Nullable jakarta.persistence.EntityManagerFactory emf)
      Set the JPA EntityManagerFactory that should be used to create EntityManagers.
      See Also:
      • EntityManagerFactory.createEntityManager()
      • EntityManagerFactory.createEntityManager(java.util.Map)
    • getEntityManagerFactory

      public @Nullable jakarta.persistence.EntityManagerFactory getEntityManagerFactory()
      Return the JPA EntityManagerFactory that should be used to create EntityManagers.
    • obtainEntityManagerFactory

      protected final jakarta.persistence.EntityManagerFactory obtainEntityManagerFactory()
      Obtain the EntityManagerFactory for actual use.
      Returns:
      the EntityManagerFactory (never null)
      Throws:
      IllegalStateException - in case of no EntityManagerFactory set
      Since:
      5.0
    • setPersistenceUnitName

      public void setPersistenceUnitName(@Nullable 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:
    • getPersistenceUnitName

      public @Nullable 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(@Nullable 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:
    • createEntityManager

      protected jakarta.persistence.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 @Nullable jakarta.persistence.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: