## org.springframework.orm.jdo.support
Class JdoDaoSupport

    java.lang.Object
      org.springframework.dao.support.DaoSupport
          org.springframework.orm.jdo.support.JdoDaoSupport

All Implemented Interfaces:
  InitializingBean

    public abstract class JdoDaoSupport

extends DaoSupport

Convenient super class for JDO data access objects.

Requires a PersistenceManagerFactory to be set, providing a JdoTemplate based on it to subclasses. Can alternatively be initialized directly with a JdoTemplate, to reuse the latter's settings such as the PersistenceManagerFactory, JdoDialect, flush mode, etc.

This base class is mainly intended for JdoTemplate usage but can also be used when working with PersistenceManagerFactoryUtils directly, for example in combination with JdoInterceptor-managed PersistenceManagers. Convenience `getPersistenceManager` and `releasePersistenceManager` methods are provided for that usage style.

This class will create its own JdoTemplate if only a PersistenceManagerFactory is passed in. The "allowCreate" flag on that JdoTemplate will be "true" by default. A custom JdoTemplate instance can be used through overriding `createJdoTemplate`.

Since:
  28.07.2003
Author:
  Juergen Hoeller
See Also:
  `setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory)`, `setJdoTemplate(org.springframework.orm.jdo.JdoTemplate)`, `createJdoTemplate(javax.jdo.PersistenceManagerFactory)`, `getPersistenceManager()`, `releasePersistenceManager(javax.jdo.PersistenceManager)`, `JdoTemplate`, `JdoInterceptor`

Field Summary

Fields inherited from class org.springframework.dao.support.DaoSupport
`logger`

Constructor Summary
`JdoDaoSupport()`

Method Summary
`protected void` `checkDaoConfig()` Abstract subclasses must override this to check their configuration.
`protected DataAccessException` `convertJdoAccessException(javax.jdo.JDOException ex)` Convert the given JDOException to an appropriate exception from the org.springframework.dao hierarchy.
`protected JdoTemplate` `createJdoTemplate(javax.jdo.PersistenceManagerFactory persistenceManagerFactory)` Create a JdoTemplate for the given PersistenceManagerFactory.
`JdoTemplate` `getJdoTemplate()` Return the JdoTemplate for this DAO, pre-initialized with the PersistenceManagerFactory or set explicitly.
`protected javax.jdo.PersistenceManager` `getPersistenceManager()` Get a JDO PersistenceManager, either from the current transaction or a new one.
`protected javax.jdo.PersistenceManager` `getPersistenceManager(boolean allowCreate)` Get a JDO PersistenceManager, either from the current transaction or a new one.
`javax.jdo.PersistenceManagerFactory` `getPersistenceManagerFactory()` Return the JDO PersistenceManagerFactory used by this DAO.
`protected void` `releasePersistenceManager(javax.jdo.PersistenceManager pm)` Close the given JDO PersistenceManager, created via this DAO's PersistenceManagerFactory, if it isn't bound to the thread.
`void` `setJdoTemplate(JdoTemplate jdoTemplate)` Set the JdoTemplate for this DAO explicitly, as an alternative to specifying a PersistenceManagerFactory.
`void` `setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory persistenceManagerFactory)` Set the JDO PersistenceManagerFactory to be used by this DAO.

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

### JdoDaoSupport

    public JdoDaoSupport()

Method Detail

### setPersistenceManagerFactory

    public final void setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory persistenceManagerFactory)

  Set the JDO PersistenceManagerFactory to be used by this DAO. Will automatically create a JdoTemplate for the given PersistenceManagerFactory.

  See Also:
    `createJdoTemplate(javax.jdo.PersistenceManagerFactory)`, `setJdoTemplate(org.springframework.orm.jdo.JdoTemplate)`

### createJdoTemplate

    protected JdoTemplate createJdoTemplate(javax.jdo.PersistenceManagerFactory persistenceManagerFactory)

  Create a JdoTemplate for the given PersistenceManagerFactory. Only invoked if populating the DAO with a PersistenceManagerFactory reference!

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

  Parameters:
    `persistenceManagerFactory` - the JDO PersistenceManagerFactoryto create a JdoTemplate for
  Returns:
    the new JdoTemplate instance
  See Also:
    `setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory)`

### getPersistenceManagerFactory

    public final javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory()

  Return the JDO PersistenceManagerFactory used by this DAO.

### setJdoTemplate

    public final void setJdoTemplate(JdoTemplate jdoTemplate)

  Set the JdoTemplate for this DAO explicitly, as an alternative to specifying a PersistenceManagerFactory.

  See Also:
    `setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory)`

### getJdoTemplate

    public final JdoTemplate getJdoTemplate()

  Return the JdoTemplate for this DAO, pre-initialized with the PersistenceManagerFactory 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`

### getPersistenceManager

    protected final javax.jdo.PersistenceManager getPersistenceManager()

  Get a JDO PersistenceManager, either from the current transaction or a new one. The latter is only allowed if the "allowCreate" setting of this bean's JdoTemplate is true.

  Returns:
    the JDO PersistenceManager
  Throws:
    `DataAccessResourceFailureException` - if the PersistenceManager couldn't be created
    `IllegalStateException` - if no thread-bound PersistenceManager found and allowCreate false
  See Also:
    `PersistenceManagerFactoryUtils.getPersistenceManager(javax.jdo.PersistenceManagerFactory, boolean)`

### getPersistenceManager

    protected final javax.jdo.PersistenceManager getPersistenceManager(boolean allowCreate)
                                                                throws DataAccessResourceFailureException,
                                                                       IllegalStateException

  Get a JDO PersistenceManager, either from the current transaction or a new one. The latter is only allowed if "allowCreate" is true.

  Parameters:
    `allowCreate` - if a non-transactional PersistenceManager should be created when no transactional PersistenceManager can be found for the current thread
  Returns:
    the JDO PersistenceManager
  Throws:
    `DataAccessResourceFailureException` - if the PersistenceManager couldn't be created
    `IllegalStateException` - if no thread-bound PersistenceManager found and allowCreate false
  See Also:
    `PersistenceManagerFactoryUtils.getPersistenceManager(javax.jdo.PersistenceManagerFactory, boolean)`

### convertJdoAccessException

    protected final DataAccessException convertJdoAccessException(javax.jdo.JDOException ex)

  Convert the given JDOException to an appropriate exception from the org.springframework.dao hierarchy.

  Delegates to the convertJdoAccessException method of this DAO's JdoTemplate.

  Parameters:
    `ex` - JDOException that occured
  Returns:
    the corresponding DataAccessException instance
  See Also:
    `setJdoTemplate(org.springframework.orm.jdo.JdoTemplate)`, `JdoAccessor.convertJdoAccessException(javax.jdo.JDOException)`

### releasePersistenceManager

    protected final void releasePersistenceManager(javax.jdo.PersistenceManager pm)

  Close the given JDO PersistenceManager, created via this DAO's PersistenceManagerFactory, if it isn't bound to the thread.

  Parameters:
    `pm` - PersistenceManager to close
  See Also:
    `PersistenceManagerFactoryUtils.releasePersistenceManager(javax.jdo.PersistenceManager, javax.jdo.PersistenceManagerFactory)`