Package 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 a JPAEntityManagerFactory
, usually in order to obtain a JPAEntityManager
. Defines common properties.- Since:
- 2.0
- Author:
- Juergen Hoeller
- See Also:
EntityManagerFactoryUtils
Constructor Summary
Constructors Constructor Description EntityManagerFactoryAccessor()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method 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 intoEntityManagerFactory.createEntityManager(Map)
(if any).void
setJpaPropertyMap(Map<String,Object> jpaProperties)
Specify JPA properties as a Map, to be passed intoEntityManagerFactory.createEntityManager(Map)
(if any).void
setPersistenceUnitName(String persistenceUnitName)
Set the name of the persistence unit to access the EntityManagerFactory for.
Constructor Detail
EntityManagerFactoryAccessor
public EntityManagerFactoryAccessor()
Method Detail
setEntityManagerFactory
public void setEntityManagerFactory(EntityManagerFactory emf)
Set the JPA EntityManagerFactory that should be used to create EntityManagers.
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.
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 intoEntityManagerFactory.createEntityManager(Map)
(if any).Can be populated with a String "value" (parsed via PropertiesEditor) or a "props" element in XML bean definitions.
setJpaPropertyMap
public void setJpaPropertyMap(Map<String,Object> jpaProperties)
Specify JPA properties as a Map, to be passed intoEntityManagerFactory.createEntityManager(Map)
(if any).Can be populated with a "map" or "props" element in XML bean definitions.
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 interfaceBeanFactoryAware
- Parameters:
beanFactory
- owning BeanFactory (nevernull
). 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)