spring-orm

org.springframework.orm.jdo.support
Class SpringPersistenceManagerProxyBean

java.lang.Object
  extended by org.springframework.orm.jdo.support.SpringPersistenceManagerProxyBean
All Implemented Interfaces:
org.springframework.beans.factory.FactoryBean<javax.jdo.PersistenceManager>, org.springframework.beans.factory.InitializingBean

public class SpringPersistenceManagerProxyBean
extends java.lang.Object
implements org.springframework.beans.factory.FactoryBean<javax.jdo.PersistenceManager>, org.springframework.beans.factory.InitializingBean

Proxy that implements the PersistenceManager interface, delegating to the current thread-bound PersistenceManager (the Spring-managed transactional PersistenceManager or the single OpenPersistenceManagerInView PersistenceManager, if any) on each invocation. This class makes such a Spring-style PersistenceManager proxy available for bean references.

The main advantage of this proxy is that it allows DAOs to work with a plain JDO PersistenceManager reference in JDO 2.1 style (see PersistenceManagerFactory.getPersistenceManagerProxy()), while still participating in Spring's resource and transaction management.

The behavior of this proxy matches the behavior that the JDO 2.1 spec defines for a PersistenceManager proxy. Hence, DAOs could seamlessly switch between StandardPersistenceManagerProxyBean and this Spring-style proxy, receiving the reference through Dependency Injection. This will work without any Spring API dependencies in the DAO code!

Note: In contrast to StandardPersistenceManagerProxyBean, this proxy works with JDO 2.0 and higher. It does not require JDO 2.1.

Since:
3.0
Author:
Juergen Hoeller
See Also:
StandardPersistenceManagerProxyBean, PersistenceManagerFactory.getPersistenceManagerProxy(), PersistenceManagerFactoryUtils.getPersistenceManager(javax.jdo.PersistenceManagerFactory, boolean), PersistenceManagerFactoryUtils.releasePersistenceManager(javax.jdo.PersistenceManager, javax.jdo.PersistenceManagerFactory)

Constructor Summary
SpringPersistenceManagerProxyBean()
           
 
Method Summary
 void afterPropertiesSet()
           
protected  JdoDialect getJdoDialect()
          Return the JDO dialect to use for this proxy.
 javax.jdo.PersistenceManager getObject()
           
 java.lang.Class<? extends javax.jdo.PersistenceManager> getObjectType()
           
protected  javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory()
          Return the target PersistenceManagerFactory for this proxy.
protected  java.lang.Class<? extends javax.jdo.PersistenceManager> getPersistenceManagerInterface()
          Return the PersistenceManager interface to expose.
protected  boolean isAllowCreate()
          Return whether the PersistenceManagerFactory proxy is allowed to create a non-transactional PersistenceManager when no transactional PersistenceManager can be found for the current thread.
 boolean isSingleton()
           
 void setAllowCreate(boolean allowCreate)
          Set whether the PersistenceManagerFactory proxy is allowed to create a non-transactional PersistenceManager when no transactional PersistenceManager can be found for the current thread.
 void setJdoDialect(JdoDialect jdoDialect)
          Set the JDO dialect to use for this proxy.
 void setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory persistenceManagerFactory)
          Set the target PersistenceManagerFactory for this proxy.
 void setPersistenceManagerInterface(java.lang.Class<? extends javax.jdo.PersistenceManager> persistenceManagerInterface)
          Specify the PersistenceManager interface to expose, possibly including vendor extensions.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SpringPersistenceManagerProxyBean

public SpringPersistenceManagerProxyBean()
Method Detail

setPersistenceManagerFactory

public void setPersistenceManagerFactory(javax.jdo.PersistenceManagerFactory persistenceManagerFactory)
Set the target PersistenceManagerFactory for this proxy.


getPersistenceManagerFactory

protected javax.jdo.PersistenceManagerFactory getPersistenceManagerFactory()
Return the target PersistenceManagerFactory for this proxy.


setJdoDialect

public void setJdoDialect(JdoDialect jdoDialect)
Set the JDO dialect to use for this proxy.

Default is a DefaultJdoDialect based on the PersistenceManagerFactory's underlying DataSource, if any.


getJdoDialect

protected JdoDialect getJdoDialect()
Return the JDO dialect to use for this proxy.


setPersistenceManagerInterface

public void setPersistenceManagerInterface(java.lang.Class<? extends javax.jdo.PersistenceManager> persistenceManagerInterface)
Specify the PersistenceManager interface to expose, possibly including vendor extensions.

Default is the standard javax.jdo.PersistenceManager interface.


getPersistenceManagerInterface

protected java.lang.Class<? extends javax.jdo.PersistenceManager> getPersistenceManagerInterface()
Return the PersistenceManager interface to expose.


setAllowCreate

public void setAllowCreate(boolean allowCreate)
Set whether the PersistenceManagerFactory proxy is allowed to create a non-transactional PersistenceManager when no transactional PersistenceManager can be found for the current thread.

Default is "true". Can be turned off to enforce access to transactional PersistenceManagers, which safely allows for DAOs written to get a PersistenceManager without explicit closing (i.e. a PersistenceManagerFactory.getPersistenceManager() call without corresponding PersistenceManager.close() call).

See Also:
PersistenceManagerFactoryUtils.getPersistenceManager(javax.jdo.PersistenceManagerFactory, boolean)

isAllowCreate

protected boolean isAllowCreate()
Return whether the PersistenceManagerFactory proxy is allowed to create a non-transactional PersistenceManager when no transactional PersistenceManager can be found for the current thread.


afterPropertiesSet

public void afterPropertiesSet()
Specified by:
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBean

getObject

public javax.jdo.PersistenceManager getObject()
Specified by:
getObject in interface org.springframework.beans.factory.FactoryBean<javax.jdo.PersistenceManager>

getObjectType

public java.lang.Class<? extends javax.jdo.PersistenceManager> getObjectType()
Specified by:
getObjectType in interface org.springframework.beans.factory.FactoryBean<javax.jdo.PersistenceManager>

isSingleton

public boolean isSingleton()
Specified by:
isSingleton in interface org.springframework.beans.factory.FactoryBean<javax.jdo.PersistenceManager>

spring-orm