org.springframework.orm.jpa
Class EntityManagerFactoryAccessor

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

public abstract class EntityManagerFactoryAccessor
extends java.lang.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
private  EntityManagerFactory entityManagerFactory
           
private  java.util.Map<java.lang.String,java.lang.Object> jpaPropertyMap
           
protected  Log logger
          Logger available to subclasses
private  java.lang.String persistenceUnitName
           
 
Constructor Summary
EntityManagerFactoryAccessor()
           
 
Method Summary
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.
 java.util.Map<java.lang.String,java.lang.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.
 java.lang.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(java.util.Properties jpaProperties)
          Specify JPA properties, to be passed into EntityManagerFactory.createEntityManager(Map) (if any).
 void setJpaPropertyMap(java.util.Map<java.lang.String,java.lang.Object> jpaProperties)
          Specify JPA properties as a Map, to be passed into EntityManagerFactory.createEntityManager(Map) (if any).
 void setPersistenceUnitName(java.lang.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


entityManagerFactory

private EntityManagerFactory entityManagerFactory

persistenceUnitName

private java.lang.String persistenceUnitName

jpaPropertyMap

private final java.util.Map<java.lang.String,java.lang.Object> jpaPropertyMap
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:
javax.persistence.EntityManagerFactory#createEntityManager(), javax.persistence.EntityManagerFactory#createEntityManager(java.util.Map)

getEntityManagerFactory

public EntityManagerFactory getEntityManagerFactory()
Return the JPA EntityManagerFactory that should be used to create EntityManagers.


setPersistenceUnitName

public void setPersistenceUnitName(java.lang.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(EntityManagerFactory)

getPersistenceUnitName

public java.lang.String getPersistenceUnitName()
Return the name of the persistence unit to access the EntityManagerFactory for, if any.


setJpaProperties

public void setJpaProperties(java.util.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:
javax.persistence.EntityManagerFactory#createEntityManager(java.util.Map)

setJpaPropertyMap

public void setJpaPropertyMap(java.util.Map<java.lang.String,java.lang.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:
javax.persistence.EntityManagerFactory#createEntityManager(java.util.Map)

getJpaPropertyMap

public java.util.Map<java.lang.String,java.lang.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 java.lang.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:
java.lang.IllegalStateException - if this accessor is not configured with an EntityManagerFactory
See Also:
javax.persistence.EntityManagerFactory#createEntityManager(), javax.persistence.EntityManagerFactory#createEntityManager(java.util.Map)

getTransactionalEntityManager

protected EntityManager getTransactionalEntityManager()
                                               throws java.lang.IllegalStateException
Obtain the transactional EntityManager for this accessor's EntityManagerFactory, if any.

Returns:
the transactional EntityManager, or null if none
Throws:
java.lang.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)