javax.jdo.JDOHelper - JDO class
PersistenceCapable
instances without declaring them to be PersistenceCapable
. It is also used to acquire a PersistenceManagerFactory
via various methods.
This helper class defines static methods that allow a JDO-aware application to examine the runtime state of instances. For example, an application can discover whether the instance is persistent, transactional, dirty, new, deleted, or detached; and to get its associated PersistenceManager
if it has one.
- Since:
- JDO 1.0
- Since:
- JDO 2.1
- Returns:
- the thread-safe singleton JDOHelper
- Since:
- JDO 2.1
Persistent instances of PersistenceCapable
classes have a JDO identity managed by the PersistenceManager
. This method returns a copy of the ObjectId that represents the JDO identity.
Transient instances and instances of classes that do not implement PersistenceCapable
return null
.
The ObjectId may be serialized and later restored, and used with a PersistenceManager
from the same JDO implementation to locate a persistent instance with the same data store identity.
If the JDO identity is managed by the application, then the ObjectId may be used with a PersistenceManager
from any JDO implementation that supports the PersistenceCapable
class.
If the JDO identity is not managed by the application or the data store, then the ObjectId returned is only valid within the current transaction.
- Parameters:
-
pc
- the PersistenceCapable instance.
- Returns:
- a copy of the ObjectId of the parameter instance as of the beginning of the transaction.
- Since:
- JDO 1.0
- Parameters:
-
pcs
- the persistence-capable instances
- Returns:
- the object ids of the parameters
- Since:
- JDO 2.0
- Parameters:
-
pcs
- the persistence-capable instances
- Returns:
- the object ids of the parameters
- Since:
- JDO 2.0
- Parameters:
-
pc
- The object
- Returns:
- The object state
- Since:
- JDO 2.1
PersistenceManager
if there is one. Transactional and persistent instances return the associated PersistenceManager
. Transient non-transactional instances and instances of classes that do not implement PersistenceCapable
return null
.
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
- the
PersistenceManager
associated with the parameter instance.
- Since:
- JDO 1.0
PersistenceManagerFactory
configured via the standard configuration file resource "META-INF/jdoconfig.xml", using the current thread's context class loader to locate the configuration file resource(s). - Returns:
- the anonymous
PersistenceManagerFactory
.
- Since:
- JDO 2.1
PersistenceManagerFactory
based on a Properties
instance, using the current thread's context class loader to locate the PersistenceManagerFactory
class. - Parameters:
-
props
- aProperties
instance with properties of thePersistenceManagerFactory
.
- Returns:
- the
PersistenceManagerFactory
.
- Since:
- JDO 1.0
propsFile
. This method is equivalent to invoking getPersistenceManagerFactory(File,ClassLoader) with Thread.currentThread().getContextClassLoader()
as the loader
argument. - Parameters:
-
propsFile
- the file containing the Properties
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
- Parameters:
-
overrides
-name
-
- Since:
- JDO 2.1
PersistenceManagerFactory
configured via the standard configuration file resource "META-INF/jdoconfig.xml", using the given class loader. - Parameters:
-
pmfClassLoader
- the ClassLoader used to load resources and classes
- Returns:
- the anonymous
PersistenceManagerFactory
.
- Since:
- JDO 2.1
stream
. This method is equivalent to invoking getPersistenceManagerFactory(InputStream,ClassLoader) with Thread.currentThread().getContextClassLoader()
as the loader
argument. - Parameters:
-
stream
- the stream containing the Properties
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
jndiLocation
in the context context
. If context
is null
, new InitialContext()
will be used. This method is equivalent to invoking getPersistenceManagerFactory(String,Context,ClassLoader) with Thread.currentThread().getContextClassLoader()
as the loader
argument. - Parameters:
-
jndiLocation
- the JNDI location containing the PersistenceManagerFactorycontext
- the context in which to find the named PersistenceManagerFactory
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
PersistenceManagerFactory
based on a Map
and a class loader. This method delegates to the getPersistenceManagerFactory method that takes a Map of overrides and a Map of properties, passing null as the overrides parameter. - Parameters:
-
props
- aMap
with properties of thePersistenceManagerFactory
.pmfClassLoader
- the class loader used to load thePersistenceManagerFactory
class
- Returns:
- the
PersistenceManagerFactory
.
- Since:
- JDO 1.0
propsFile
. Creates a PersistenceManagerFactory with loader
. Any IOException
s or FileNotFoundException
s thrown during resource loading will be wrapped in a JDOFatalUserException. - Parameters:
-
propsFile
- the file containing the Propertiesloader
- the class loader to use to load thePersistenceManagerFactory
class
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
- Parameters:
-
name
-loader
-
- Since:
- JDO 1.0
- Parameters:
-
overrides
-name
-resourceLoader
-
- Since:
- JDO 2.1
stream
. Creates a PersistenceManagerFactory with loader
. Any IOException
s thrown during resource loading will be wrapped in a JDOFatalUserException. - Parameters:
-
stream
- the stream containing the Propertiesloader
- the class loader to use to load thePersistenceManagerFactory
class
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
jndiLocation
in the context context
. If context
is null
, new InitialContext()
will be used. Creates a PersistenceManagerFactory with loader
. Any NamingException
s thrown will be wrapped in a JDOFatalUserException. - Parameters:
-
jndiLocation
- the JNDI location containing the PersistenceManagerFactorycontext
- the context in which to find the named PersistenceManagerFactoryloader
- the class loader to use to load thePersistenceManagerFactory
class
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
- Parameters:
-
name
-resourceLoader
-pmfLoader
-
- Since:
- JDO 2.0
name
, or, if not found, returns a PersistenceManagerFactory with the given name or, if not found, returns a javax.persistence.EntityManagerFactory
cast to a PersistenceManagerFactory. If the name given is null or consists only of whitespace, it is interpreted as Constants.ANONYMOUS_PERSISTENCE_MANAGER_FACTORY_NAME. The following are standard key names: "javax.jdo.PersistenceManagerFactoryClass"
"javax.jdo.option.Optimistic",
"javax.jdo.option.RetainValues",
"javax.jdo.option.RestoreValues",
"javax.jdo.option.IgnoreCache",
"javax.jdo.option.NontransactionalRead",
"javax.jdo.option.NontransactionalWrite",
"javax.jdo.option.Multithreaded",
"javax.jdo.option.ConnectionUserName",
"javax.jdo.option.ConnectionPassword",
"javax.jdo.option.ConnectionURL",
"javax.jdo.option.ConnectionFactoryName",
"javax.jdo.option.ConnectionFactory2Name",
"javax.jdo.option.Mapping",
"javax.jdo.mapping.Catalog",
"javax.jdo.mapping.Schema",
"javax.jdo.option.PersistenceUnitName".
"javax.jdo.option.DetachAllOnCommit".
"javax.jdo.option.CopyOnAttach".
"javax.jdo.option.TransactionType".
"javax.jdo.option.ServerTimeZoneID".
"javax.jdo.option.Name".
and properties of the form javax.jdo.option.InstanceLifecycleListener.{listenerClass}[=[{pcClasses}]]
where {listenerClass}
is the fully qualified name of a class that implements javax.jdo.listener.InstanceLifecycleListener, and {pcClasses}
is an optional comma- or whitespace-delimited list of persistence-capable classes to be observed; the absence of a value for a property of this form means that instances of all persistence-capable classes will be observed by an instance of the given listener class. JDO implementations are permitted to define key values of their own. Any key values not recognized by the implementation must be ignored. Key values that are recognized but not supported by an implementation must result in a JDOFatalUserException
thrown by the method.
The returned PersistenceManagerFactory
is not configurable (the setXXX
methods will throw an exception). This method loads the properties found at name
, if any, via resourceLoader
, and creates a PersistenceManagerFactory with pmfLoader
. Any exceptions thrown during resource loading will be wrapped in a JDOFatalUserException. If multiple PMFs with the requested name are found, a JDOFatalUserException is thrown.
- Parameters:
-
overrides
- a Map containing properties that override properties defined in any resources loaded according to the "name" parametername
- interpreted as the name of the resource containing the PMF properties, the name of the PMF, or the persistence unit name, in that order; if name is null, blank or whitespace, it is interpreted as indicating the anonymous PersistenceManagerFactory.resourceLoader
- the class loader to use to load properties file resources; must be non-null ifname
is non-null or blankpmfLoader
- the class loader to use to load the PersistenceManagerFactory orjavax.persistence.EntityManagerFactory
classes
- Returns:
- the PersistenceManagerFactory with properties in the given resource, with the given name, or with the given persitence unit name
- Since:
- JDO 2.1
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
- a copy of the ObjectId of the parameter instance as modified in this transaction.
- Since:
- JDO 1.0
- Parameters:
-
pc
- the instance
- Returns:
- the version of the instance
- Since:
- JDO 2.0
true
. Transient instances and instances of classes that do not implement PersistenceCapable
return false
.
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
-
true
if the parameter instance was deleted in the current transaction.
- Since:
- JDO 1.0
Transient instances return false.
- Parameters:
-
pc
- the instance
- Returns:
-
true
if this instance is detached.
- Since:
- JDO 2.0
- See Also:
- PersistenceCapable.jdoIsDetached()
true
. Transient instances and instances of classes that do not implement PersistenceCapable
return false
.
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
-
true
if the parameter instance has been modified in the current transaction.
- Since:
- JDO 1.0
true
. Transient instances and instances of classes that do not implement PersistenceCapable
return false
.
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
-
true
if the parameter instance was made persistent in the current transaction.
- Since:
- JDO 1.0
true
. Transient instances and instances of classes that do not implement PersistenceCapable
return false
.
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
-
true
if the parameter instance is persistent.
- Since:
- JDO 1.0
Transient instances and instances of classes that do not implement PersistenceCapable
return false
.
- Parameters:
-
pc
- thePersistenceCapable
instance.
- Returns:
-
true
if the parameter instance is transactional.
- Since:
- JDO 1.0
- See Also:
- PersistenceCapable.jdoIsTransactional()
PersistenceCapable
classes are able to detect changes made to their fields. However, if a reference to an array is given to a method outside the class, and the array is modified, then the persistent instance is not aware of the change. This API allows the application to notify the instance that a change was made to a field. Transient instances and instances of classes that do not implement PersistenceCapable
ignore this method.
- Parameters:
-
pc
- thePersistenceCapable
instance.fieldName
- the name of the field to be marked dirty.
- Since:
- JDO 1.0