org.springframework.orm.jdo.support
Class JdoDaoSupport

java.lang.Object
  extended by org.springframework.dao.support.DaoSupport
      extended by 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)


Copyright © 2002-2008 The Spring Framework.