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- thePersistenceCapableinstance.
- Returns:
- the
PersistenceManagerassociated 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- aPropertiesinstance with properties of thePersistenceManagerFactory.
- Returns:
- the
PersistenceManagerFactory.
- Since:
- JDO 1.0
PersistenceManagerFactory configured based
on the properties stored in the file at
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
PersistenceManagerFactory or persistence
unit.- 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
PersistenceManagerFactory configured based
on the Properties stored in the input stream at
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
PersistenceManagerFactory at the JNDI
location specified by 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- aMapwith properties of thePersistenceManagerFactory.pmfClassLoader- the class loader used to load thePersistenceManagerFactoryclass
- Returns:
- the
PersistenceManagerFactory.
- Since:
- JDO 1.0
PersistenceManagerFactory configured based
on the properties stored in the file at
propsFile. Creates a PersistenceManagerFactory with loader. Any
IOExceptions or
FileNotFoundExceptions thrown during resource
loading will be wrapped in a JDOFatalUserException.- Parameters:
propsFile- the file containing the Propertiesloader- the class loader to use to load thePersistenceManagerFactoryclass
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
PersistenceManagerFactory or persistence
unit.- Parameters:
name-loader-
- Since:
- JDO 1.0
PersistenceManagerFactory or persistence
unit.- Parameters:
overrides-name-resourceLoader-
- Since:
- JDO 2.1
PersistenceManagerFactory configured based
on the Properties stored in the input stream at
stream. Creates a PersistenceManagerFactory with loader. Any
IOExceptions thrown during resource
loading will be wrapped in a JDOFatalUserException.- Parameters:
stream- the stream containing the Propertiesloader- the class loader to use to load thePersistenceManagerFactoryclass
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
PersistenceManagerFactory at the JNDI
location specified by jndiLocation in the context
context. If context is
null, new InitialContext() will be
used. Creates a PersistenceManagerFactory with
loader. Any NamingExceptions 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 thePersistenceManagerFactoryclass
- Returns:
- the PersistenceManagerFactory
- Since:
- JDO 2.0
PersistenceManagerFactory or persistence
unit.- Parameters:
name-resourceLoader-pmfLoader-
- Since:
- JDO 2.0
PersistenceManagerFactory configured based
on the properties stored in the resource at
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 anonymousPersistenceManagerFactory.resourceLoader- the class loader to use to load properties file resources; must be non-null ifnameis non-null or blankpmfLoader- the class loader to use to load thePersistenceManagerFactoryorjavax.persistence.EntityManagerFactoryclasses
- Returns:
- the
PersistenceManagerFactorywith properties in the given resource, with the given name, or with the given persitence unit name
- Since:
- JDO 2.1
- Parameters:
pc- thePersistenceCapableinstance.
- 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- thePersistenceCapableinstance.
- Returns:
trueif the parameter instance was deleted in the current transaction.
- Since:
- JDO 1.0
Transient instances return false.
- Parameters:
pc- the instance
- Returns:
trueif 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- thePersistenceCapableinstance.
- Returns:
trueif 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- thePersistenceCapableinstance.
- Returns:
trueif 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- thePersistenceCapableinstance.
- Returns:
trueif the parameter instance is persistent.
- Since:
- JDO 1.0
Transient instances and instances of classes that do not implement
PersistenceCapable return false.
- Parameters:
pc- thePersistenceCapableinstance.
- Returns:
trueif the parameter instance is transactional.
- Since:
- JDO 1.0
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- thePersistenceCapableinstance.fieldName- the name of the field to be marked dirty.
- Since:
- JDO 1.0
This documentation page is derived (with some adjustments) from the JDO 2.2 API
and is available under the terms of the Apache License, v. 2.0.