org.springframework.orm.jpa.support
Class JpaDaoSupport

java.lang.Object
  extended by org.springframework.dao.support.DaoSupport
      extended by org.springframework.orm.jpa.support.JpaDaoSupport
All Implemented Interfaces:
InitializingBean

public abstract class JpaDaoSupport
extends DaoSupport

Convenient super class for JPA data access objects. Intended for JpaTemplate usage. Alternatively, JPA-based DAOs can be coded against the plain JPA EntityManagerFactory/EntityManager API.

Requires an EntityManagerFactory or EntityManager to be set, providing a JpaTemplate based on it to subclasses. Can alternatively be initialized directly via a JpaTemplate, to reuse the latter's settings such as the EntityManagerFactory, JpaDialect, flush mode, etc.

This class will create its own JpaTemplate if an EntityManagerFactory or EntityManager reference is passed in. A custom JpaTemplate instance can be used through overriding createJpaTemplate.

Since:
2.0
Author:
Juergen Hoeller
See Also:
setEntityManagerFactory(javax.persistence.EntityManagerFactory), setEntityManager(javax.persistence.EntityManager), createJpaTemplate(javax.persistence.EntityManagerFactory), setJpaTemplate(org.springframework.orm.jpa.JpaTemplate), JpaTemplate

Field Summary
 
Fields inherited from class org.springframework.dao.support.DaoSupport
logger
 
Constructor Summary
JpaDaoSupport()
           
 
Method Summary
protected  void checkDaoConfig()
          Abstract subclasses must override this to check their configuration.
protected  JpaTemplate createJpaTemplate(javax.persistence.EntityManager entityManager)
          Create a JpaTemplate for the given EntityManager.
protected  JpaTemplate createJpaTemplate(javax.persistence.EntityManagerFactory entityManagerFactory)
          Create a JpaTemplate for the given EntityManagerFactory.
 JpaTemplate getJpaTemplate()
          Return the JpaTemplate for this DAO, pre-initialized with the EntityManagerFactory or set explicitly.
 void setEntityManager(javax.persistence.EntityManager entityManager)
          Set the JPA EntityManager to be used by this DAO.
 void setEntityManagerFactory(javax.persistence.EntityManagerFactory entityManagerFactory)
          Set the JPA EntityManagerFactory to be used by this DAO.
 void setJpaTemplate(JpaTemplate jpaTemplate)
          Set the JpaTemplate for this DAO explicitly, as an alternative to specifying a EntityManagerFactory.
 
Methods inherited from class org.springframework.dao.support.DaoSupport
afterPropertiesSet, initDao
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JpaDaoSupport

public JpaDaoSupport()
Method Detail

setEntityManagerFactory

public final void setEntityManagerFactory(javax.persistence.EntityManagerFactory entityManagerFactory)
Set the JPA EntityManagerFactory to be used by this DAO. Will automatically create a JpaTemplate for the given EntityManagerFactory.

See Also:
createJpaTemplate(javax.persistence.EntityManagerFactory), setJpaTemplate(org.springframework.orm.jpa.JpaTemplate)

createJpaTemplate

protected JpaTemplate createJpaTemplate(javax.persistence.EntityManagerFactory entityManagerFactory)
Create a JpaTemplate for the given EntityManagerFactory. Only invoked if populating the DAO with a EntityManagerFactory reference!

Can be overridden in subclasses to provide a JpaTemplate instance with different configuration, or a custom JpaTemplate subclass.

Parameters:
entityManagerFactory - the JPA EntityManagerFactory to create a JpaTemplate for
Returns:
the new JpaTemplate instance
See Also:
setEntityManagerFactory(javax.persistence.EntityManagerFactory)

setEntityManager

public final void setEntityManager(javax.persistence.EntityManager entityManager)
Set the JPA EntityManager to be used by this DAO. Will automatically create a JpaTemplate for the given EntityManager.

See Also:
createJpaTemplate(javax.persistence.EntityManagerFactory), setJpaTemplate(org.springframework.orm.jpa.JpaTemplate)

createJpaTemplate

protected JpaTemplate createJpaTemplate(javax.persistence.EntityManager entityManager)
Create a JpaTemplate for the given EntityManager. Only invoked if populating the DAO with a EntityManager reference!

Can be overridden in subclasses to provide a JpaTemplate instance with different configuration, or a custom JpaTemplate subclass.

Parameters:
entityManager - the JPA EntityManager to create a JpaTemplate for
Returns:
the new JpaTemplate instance
See Also:
setEntityManagerFactory(javax.persistence.EntityManagerFactory)

setJpaTemplate

public final void setJpaTemplate(JpaTemplate jpaTemplate)
Set the JpaTemplate for this DAO explicitly, as an alternative to specifying a EntityManagerFactory.

See Also:
setEntityManagerFactory(javax.persistence.EntityManagerFactory)

getJpaTemplate

public final JpaTemplate getJpaTemplate()
Return the JpaTemplate for this DAO, pre-initialized with the EntityManagerFactory or set explicitly.


checkDaoConfig

protected final void checkDaoConfig()
Description copied from class: DaoSupport
Abstract subclasses must override this to check their configuration.

Implementors should be marked as final

Specified by:
checkDaoConfig in class DaoSupport