Package org.datanucleus.api.jdo
Class JDOPersistenceManager
- java.lang.Object
-
- org.datanucleus.api.jdo.JDOPersistenceManager
-
- All Implemented Interfaces:
AutoCloseable
,javax.jdo.PersistenceManager
public class JDOPersistenceManager extends Object implements javax.jdo.PersistenceManager
Provide the basics of a JDO PersistenceManager using an underlying ExecutionContext to perform the actual persistence.
-
-
Field Summary
Fields Modifier and Type Field Description protected org.datanucleus.ExecutionContext
ec
Backing ExecutionContext for this PersistenceManager.protected JDOFetchPlan
fetchPlan
JDO Fetch Plan.protected javax.jdo.Transaction
jdotx
static org.datanucleus.util.NucleusLogger
LOGGER
Logger for JDO.protected JDOPersistenceManagerFactory
pmf
Owning PersistenceManagerFactory.
-
Constructor Summary
Constructors Constructor Description JDOPersistenceManager(JDOPersistenceManagerFactory pmf, String userName, String password)
Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener, Class... classes)
Method to register a lifecycle listener as per JDO 2.0 spec 12.15.void
addTransactionEventListener(org.datanucleus.transaction.TransactionEventListener listener)
Convenience method to add a listener for transaction events (begin, commit, rollback).protected void
assertActiveTransaction()
Method to assert if the current transaction is active.protected void
assertIsOpen()
Method to assert if this Persistence Manager is open.protected void
assertReadable(String operation)
Method to assert if no active transaction and nontransactionalRead is not set.protected void
assertWritable()
Method to assert if the current transaction is active or non transactional writes are allowed.void
checkConsistency()
This method validates the cache with the datastore.void
close()
Method to close the Persistence Manager.javax.jdo.Transaction
currentTransaction()
Accessor for the current transaction.void
deletePersistent(Object obj)
JDO method to delete an object from the datastore.void
deletePersistentAll(Object... pcs)
JDO method to delete an array of objects from the datastore.void
deletePersistentAll(Collection pcs)
JDO method to delete a collection of objects from the datastore.<T> T
detachCopy(T pc)
JDO method to detach a persistent object.<T> Collection<T>
detachCopyAll(Collection<T> pcs)
Detach the specified objects from thePersistenceManager
.<T> T[]
detachCopyAll(T... pcs)
Detach the specified objects from thePersistenceManager
.void
evict(Object obj)
Method to evict an object from L1 cache.void
evictAll()
Method to evict all current objects from L1 cache.void
evictAll(boolean subclasses, Class cls)
Method to evict all objects of the specified type (and optionaly its subclasses).void
evictAll(Object... pcs)
Method to evict an array of objects from L1 cache.void
evictAll(Collection pcs)
Method to evict a collection of objects from L1 cache.void
flush()
This method flushes all dirty, new, and deleted instances to the datastore.boolean
getCopyOnAttach()
Accessor for whether to copy objects on attaching.javax.jdo.datastore.JDOConnection
getDataStoreConnection()
Accessor for a connection on the datastore.Integer
getDatastoreReadTimeoutMillis()
Accessor for the datastore read timeout (milliseconds).Integer
getDatastoreWriteTimeoutMillis()
Accessor for the datastore write timeout (milliseconds).boolean
getDetachAllOnCommit()
Accessor for whether to detach all objects on commit of the transaction.org.datanucleus.ExecutionContext
getExecutionContext()
Convenience accessor for the ExecutionContext performing the actual persistence.<T> javax.jdo.Extent<T>
getExtent(Class<T> pcClass)
Extents are collections of datastore objects managed by the datastore, not by explicit user operations on collections.<T> javax.jdo.Extent<T>
getExtent(Class<T> pcClass, boolean subclasses)
Extents are collections of datastore objects managed by the datastore, not by explicit user operations on collections.javax.jdo.FetchGroup
getFetchGroup(Class cls, String name)
Method to return a fetch group for the specified class, with the specified name.javax.jdo.FetchPlan
getFetchPlan()
Acessor for the current FetchPlanboolean
getIgnoreCache()
Accessor for whether to ignore the cache.Set
getManagedObjects()
Accessor for the objects currently managed by this PM in the current transaction.Set
getManagedObjects(Class... classes)
Accessor for the objects currently managed by this PM in the current transaction.Set
getManagedObjects(EnumSet states)
Accessor for the objects currently managed by this PM in the current transaction.Set
getManagedObjects(EnumSet states, Class... classes)
Accessor for the objects currently managed by this PM in the current transaction.boolean
getMultithreaded()
Accessor for whether the Persistence Manager is multithreaded.<T> T
getObjectById(Class<T> cls, Object key)
Method to look up the instance of the given type with the given key.Object
getObjectById(Object id)
Accessor for an object given the object id.Object
getObjectById(Object id, boolean validate)
Accessor for an object given the object id.<T> T
getObjectByUnique(Class<T> cls, String[] fieldNames, Object[] fieldValues)
Method to look up the instance of the given type with the given key.Object
getObjectId(Object pc)
Accessor for an object id given the object.Class
getObjectIdClass(Class cls)
Accessor for the class of the object id given the class of object.Object[]
getObjectsById(boolean validate, Object... oids)
Accessor for the objects given the object ids.Object[]
getObjectsById(Object... oids)
Accessor for the objects given the object ids, validating the objects.Collection
getObjectsById(Collection oids)
Accessor for the objects given the object ids, validating the objects.Collection
getObjectsById(Collection oids, boolean validate)
Accessor for the objects given the object ids.JDOPersistenceManagerFactory
getPersistenceManagerFactory()
Accessor for the PersistenceManager Factory.Map<String,Object>
getProperties()
Get the properties and associated values currently in effect for the persistence manager.javax.jdo.datastore.Sequence
getSequence(String sequenceName)
Method to retrieve a sequence by name.Date
getServerDate()
Accessor for the date on the datastore.Set<String>
getSupportedProperties()
Get the names of the properties that are supported for use with the persistence manager.Object
getTransactionalObjectId(Object pc)
Accessor for the object id of a transactional object given the object.Object
getUserObject()
The application might manage PersistenceManager instances by using an associated object for bookkeeping purposes.Object
getUserObject(Object key)
Method to get a user object from the PersistenceManager.protected boolean
hasPersistenceInformationForClass(Class cls)
Utility method to check if the specified class has reachable metadata/annotations.protected void
internalClose()
The internal method called by the PMF to cleanup this PM.boolean
isClosed()
Accessor for whether this ExecutionContext is closed.void
makeNontransactional(Object pc)
Method to make nontransactional an object.void
makeNontransactionalAll(Object... pcs)
Method to make nontransactional an array of objects.void
makeNontransactionalAll(Collection pcs)
Method to make nontransactional a collection of objects.<T> T
makePersistent(T obj)
JDO method to persist an object.<T> Collection<T>
makePersistentAll(Collection<T> pcs)
JDO method to make persistent a collection of objects.<T> T[]
makePersistentAll(T... pcs)
JDO method to make persistent an array of objects.void
makeTransactional(Object pc)
Method to make transactional an object.void
makeTransactionalAll(Object... pcs)
Method to make transactional an array of objects.void
makeTransactionalAll(Collection pcs)
Method to make transactional a collection of objects.void
makeTransient(Object pc)
Method to make transient an object.void
makeTransient(Object pc, boolean useFetchPlan)
Method to make transient an object allowing fetching using the fetch plan.void
makeTransientAll(boolean includeFetchPlan, Object... pcs)
Method to make transient an array of objects.void
makeTransientAll(Object... pcs)
Method to make transient an array of objects.void
makeTransientAll(Collection pcs)
Method to make transient a collection of objects.void
makeTransientAll(Collection pcs, boolean useFetchPlan)
Method to make transient a collection of objects.<T> T
newInstance(Class<T> pc)
Method to generate an instance of an interface, abstract class, or concrete PC class.<T> javax.jdo.JDOQLTypedQuery<T>
newJDOQLTypedQuery(Class<T> cls)
Construct a JDOQLTypedQuery instance for the specified candidate.<T> javax.jdo.Query<T>
newNamedQuery(Class<T> cls, String queryName)
Construct a query instance with the candidate class and the query name.Object
newObjectIdInstance(Class pcClass, Object key)
This method returns an object id instance corresponding to the pcClass and key arguments.javax.jdo.Query
newQuery()
Construct an empty query instance.<T> javax.jdo.Query<T>
newQuery(Class<T> cls)
Construct a query instance with the candidate class specified.<T> javax.jdo.Query<T>
newQuery(Class<T> cls, String filter)
Construct a query instance with the candidate class and filter specified.<T> javax.jdo.Query<T>
newQuery(Class<T> cls, Collection<T> cln)
Construct a query instance with the candidate class and candidate Collection specified.<T> javax.jdo.Query<T>
newQuery(Class<T> cls, Collection<T> cln, String filter)
Construct a query instance with the candidate class, the candidate Collection, and filter specified.javax.jdo.Query
newQuery(Object obj)
Construct a query instance from another query.javax.jdo.Query
newQuery(String query)
Construct a query instance using the specified Single-String query.javax.jdo.Query
newQuery(String language, Object query)
Construct a query instance using the specified language and the specified query.<T> javax.jdo.Query<T>
newQuery(javax.jdo.Extent<T> cln)
Construct a query instance with the candidate Extent specified; the candidate class is taken from the Extent.<T> javax.jdo.Query<T>
newQuery(javax.jdo.Extent<T> cln, String filter)
Construct a query instance with the candidate Extent and filter specified.Object
putUserObject(Object key, Object value)
Method to put a user object into the PersistenceManager.void
refresh(Object obj)
Method to do a refresh of an object.void
refreshAll()
Method to do a refresh of all objects.void
refreshAll(Object... pcs)
Method to do a refresh of an array of objects.void
refreshAll(Collection pcs)
Method to do a refresh of a collection of objects.void
refreshAll(javax.jdo.JDOException exc)
Method to do a refresh of objects that failed verification in the exception.void
removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener)
Method to remove a currently registered lifecycle listener, as per JDO 2.0 spec 12.15.void
removeTransactionEventListener(org.datanucleus.transaction.TransactionEventListener listener)
Convenience method to remove the supplied listener from transaction event notification.Object
removeUserObject(Object key)
Method to remove a user object from the PersistenceManager.void
retrieve(Object pc)
Method to retrieve the fields of an object.void
retrieve(Object pc, boolean useFetchPlan)
Method to retrieve the fields of an object.void
retrieveAll(boolean useFetchPlan, Object... pcs)
Retrieve field values of instances from the store.void
retrieveAll(Object... pcs)
Method to retrieve an array of objects.void
retrieveAll(Collection pcs)
Method to retrieve a collection of objects.void
retrieveAll(Collection pcs, boolean useFetchPlan)
Retrieve field values of instances from the store.void
setCopyOnAttach(boolean flag)
Mutator for whether to copy objects on attach.void
setDatastoreReadTimeoutMillis(Integer timeout)
Mutator for the timeout to use for datastore reads.void
setDatastoreWriteTimeoutMillis(Integer timeout)
Mutator for the timeout to use for datastore writes.void
setDetachAllOnCommit(boolean flag)
Mutator for whether to detach all objects on commit of the transaction.void
setIgnoreCache(boolean flag)
Mutator for whether to ignore the cache.void
setMultithreaded(boolean flag)
Mutator for whether the Persistence Manager is multithreaded.void
setProperty(String propertyName, Object value)
Set a persistence manager property.void
setUserObject(Object userObject)
The application might manage PersistenceManager instances by using an associated object for bookkeeping purposes.
-
-
-
Field Detail
-
LOGGER
public static final org.datanucleus.util.NucleusLogger LOGGER
Logger for JDO.
-
ec
protected org.datanucleus.ExecutionContext ec
Backing ExecutionContext for this PersistenceManager.
-
jdotx
protected javax.jdo.Transaction jdotx
-
pmf
protected JDOPersistenceManagerFactory pmf
Owning PersistenceManagerFactory.
-
fetchPlan
protected JDOFetchPlan fetchPlan
JDO Fetch Plan.
-
-
Constructor Detail
-
JDOPersistenceManager
public JDOPersistenceManager(JDOPersistenceManagerFactory pmf, String userName, String password)
Constructor.- Parameters:
pmf
- Persistence Manager FactoryuserName
- Username for the datastorepassword
- Password for the datastore
-
-
Method Detail
-
close
public void close()
Method to close the Persistence Manager.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfacejavax.jdo.PersistenceManager
-
isClosed
public boolean isClosed()
Accessor for whether this ExecutionContext is closed.- Specified by:
isClosed
in interfacejavax.jdo.PersistenceManager
- Returns:
- Whether this manager is closed.
-
internalClose
protected void internalClose()
The internal method called by the PMF to cleanup this PM. Called from PMF.releasePersistenceManager().
-
getExecutionContext
public org.datanucleus.ExecutionContext getExecutionContext()
Convenience accessor for the ExecutionContext performing the actual persistence.- Returns:
- The ExecutionContext
-
getPersistenceManagerFactory
public JDOPersistenceManagerFactory getPersistenceManagerFactory()
Accessor for the PersistenceManager Factory.- Specified by:
getPersistenceManagerFactory
in interfacejavax.jdo.PersistenceManager
- Returns:
- The PersistenceManagerFactory
-
getDetachAllOnCommit
public boolean getDetachAllOnCommit()
Accessor for whether to detach all objects on commit of the transaction.- Specified by:
getDetachAllOnCommit
in interfacejavax.jdo.PersistenceManager
- Returns:
- Whether to detach all on commit.
-
getCopyOnAttach
public boolean getCopyOnAttach()
Accessor for whether to copy objects on attaching.- Specified by:
getCopyOnAttach
in interfacejavax.jdo.PersistenceManager
- Returns:
- Whether to copy objects on attaching.
-
getFetchPlan
public javax.jdo.FetchPlan getFetchPlan()
Acessor for the current FetchPlan- Specified by:
getFetchPlan
in interfacejavax.jdo.PersistenceManager
- Returns:
- The FetchPlan
-
getIgnoreCache
public boolean getIgnoreCache()
Accessor for whether to ignore the cache.- Specified by:
getIgnoreCache
in interfacejavax.jdo.PersistenceManager
- Returns:
- Whether to ignore the cache.
-
getMultithreaded
public boolean getMultithreaded()
Accessor for whether the Persistence Manager is multithreaded.- Specified by:
getMultithreaded
in interfacejavax.jdo.PersistenceManager
- Returns:
- Whether to run multithreaded.
-
setDetachAllOnCommit
public void setDetachAllOnCommit(boolean flag)
Mutator for whether to detach all objects on commit of the transaction.- Specified by:
setDetachAllOnCommit
in interfacejavax.jdo.PersistenceManager
- Parameters:
flag
- Whether to detach all on commit.
-
setCopyOnAttach
public void setCopyOnAttach(boolean flag)
Mutator for whether to copy objects on attach.- Specified by:
setCopyOnAttach
in interfacejavax.jdo.PersistenceManager
- Parameters:
flag
- Whether to copy on attaching
-
setIgnoreCache
public void setIgnoreCache(boolean flag)
Mutator for whether to ignore the cache.- Specified by:
setIgnoreCache
in interfacejavax.jdo.PersistenceManager
- Parameters:
flag
- Whether to ignore the cache.
-
setMultithreaded
public void setMultithreaded(boolean flag)
Mutator for whether the Persistence Manager is multithreaded.- Specified by:
setMultithreaded
in interfacejavax.jdo.PersistenceManager
- Parameters:
flag
- Whether to run multithreaded.
-
setDatastoreReadTimeoutMillis
public void setDatastoreReadTimeoutMillis(Integer timeout)
Mutator for the timeout to use for datastore reads.- Specified by:
setDatastoreReadTimeoutMillis
in interfacejavax.jdo.PersistenceManager
- Parameters:
timeout
- Datastore read timeout interval (millisecs)
-
getDatastoreReadTimeoutMillis
public Integer getDatastoreReadTimeoutMillis()
Accessor for the datastore read timeout (milliseconds).- Specified by:
getDatastoreReadTimeoutMillis
in interfacejavax.jdo.PersistenceManager
- Returns:
- datastore read timeout
-
setDatastoreWriteTimeoutMillis
public void setDatastoreWriteTimeoutMillis(Integer timeout)
Mutator for the timeout to use for datastore writes.- Specified by:
setDatastoreWriteTimeoutMillis
in interfacejavax.jdo.PersistenceManager
- Parameters:
timeout
- Datastore write timeout interval (millisecs)
-
getDatastoreWriteTimeoutMillis
public Integer getDatastoreWriteTimeoutMillis()
Accessor for the datastore write timeout (milliseconds).- Specified by:
getDatastoreWriteTimeoutMillis
in interfacejavax.jdo.PersistenceManager
- Returns:
- datastore write timeout
-
getServerDate
public Date getServerDate()
Accessor for the date on the datastore.- Specified by:
getServerDate
in interfacejavax.jdo.PersistenceManager
- Returns:
- Date on the datastore
-
currentTransaction
public javax.jdo.Transaction currentTransaction()
Accessor for the current transaction.- Specified by:
currentTransaction
in interfacejavax.jdo.PersistenceManager
- Returns:
- The transaction
-
evict
public void evict(Object obj)
Method to evict an object from L1 cache.- Specified by:
evict
in interfacejavax.jdo.PersistenceManager
- Parameters:
obj
- The object- Throws:
javax.jdo.JDOUserException
- thrown if some instances could not be evicted
-
evictAll
public void evictAll(boolean subclasses, Class cls)
Method to evict all objects of the specified type (and optionaly its subclasses).- Specified by:
evictAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
cls
- Type of persistable objectsubclasses
- Whether to include subclasses
-
evictAll
public void evictAll(Object... pcs)
Method to evict an array of objects from L1 cache.- Specified by:
evictAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects
-
evictAll
public void evictAll(Collection pcs)
Method to evict a collection of objects from L1 cache.- Specified by:
evictAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects- Throws:
javax.jdo.JDOUserException
- thrown if some instances could not be evicted
-
evictAll
public void evictAll()
Method to evict all current objects from L1 cache.- Specified by:
evictAll
in interfacejavax.jdo.PersistenceManager
-
refresh
public void refresh(Object obj)
Method to do a refresh of an object.- Specified by:
refresh
in interfacejavax.jdo.PersistenceManager
- Parameters:
obj
- The Object- Throws:
javax.jdo.JDOUserException
- thrown if the object could not be refreshed
-
refreshAll
public void refreshAll(Object... pcs)
Method to do a refresh of an array of objects.- Specified by:
refreshAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The Objects
-
refreshAll
public void refreshAll(Collection pcs)
Method to do a refresh of a collection of objects.- Specified by:
refreshAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The Objects- Throws:
javax.jdo.JDOUserException
- thrown if instances could not be refreshed.
-
refreshAll
public void refreshAll()
Method to do a refresh of all objects.- Specified by:
refreshAll
in interfacejavax.jdo.PersistenceManager
- Throws:
javax.jdo.JDOUserException
- thrown if instances could not be refreshed.
-
refreshAll
public void refreshAll(javax.jdo.JDOException exc)
Method to do a refresh of objects that failed verification in the exception.- Specified by:
refreshAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
exc
- The JDO exception containing the objects that failed
-
retrieve
public void retrieve(Object pc, boolean useFetchPlan)
Method to retrieve the fields of an object.- Specified by:
retrieve
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The objectuseFetchPlan
- whether to retrieve only the current fetch plan fields
-
retrieve
public void retrieve(Object pc)
Method to retrieve the fields of an object.- Specified by:
retrieve
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object
-
retrieveAll
public void retrieveAll(Object... pcs)
Method to retrieve an array of objects.- Specified by:
retrieveAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects
-
retrieveAll
public void retrieveAll(boolean useFetchPlan, Object... pcs)
Retrieve field values of instances from the store.- Specified by:
retrieveAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
useFetchPlan
- whether to retrieve only the current fetch plan fieldspcs
- the instances
-
retrieveAll
public void retrieveAll(Collection pcs, boolean useFetchPlan)
Retrieve field values of instances from the store. This tells thePersistenceManager
that the application intends to use the instances, and their field values should be retrieved. The fields in the current fetch group must be retrieved, and the implementation might retrieve more fields than the current fetch group. ThePersistenceManager
might use policy information about the class to retrieve associated instances.- Specified by:
retrieveAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- the instancesuseFetchPlan
- whether to retrieve only the current fetch plan fields
-
retrieveAll
public void retrieveAll(Collection pcs)
Method to retrieve a collection of objects. Throws a JDOUserException if instances could not be retrieved.- Specified by:
retrieveAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects
-
makePersistent
public <T> T makePersistent(T obj)
JDO method to persist an object. Will also attach a previously detached object.- Specified by:
makePersistent
in interfacejavax.jdo.PersistenceManager
- Parameters:
obj
- The object- Returns:
- The persisted object
-
makePersistentAll
public <T> T[] makePersistentAll(T... pcs)
JDO method to make persistent an array of objects.- Specified by:
makePersistentAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects to persist- Returns:
- The persistent objects
-
makePersistentAll
public <T> Collection<T> makePersistentAll(Collection<T> pcs)
JDO method to make persistent a collection of objects. Throws a JDOUserException if objects could not be made persistent.- Specified by:
makePersistentAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects to persist- Returns:
- The persistent objects
-
deletePersistent
public void deletePersistent(Object obj)
JDO method to delete an object from the datastore.- Specified by:
deletePersistent
in interfacejavax.jdo.PersistenceManager
- Parameters:
obj
- The object
-
deletePersistentAll
public void deletePersistentAll(Object... pcs)
JDO method to delete an array of objects from the datastore.- Specified by:
deletePersistentAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects- Throws:
javax.jdo.JDOUserException
- Thrown if one (or more) object cannot be deleted
-
deletePersistentAll
public void deletePersistentAll(Collection pcs)
JDO method to delete a collection of objects from the datastore. Throws a JDOUserException if objects could not be deleted.- Specified by:
deletePersistentAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects- Throws:
javax.jdo.JDOUserException
- Thrown if one (or more) object cannot be deleted
-
makeTransient
public void makeTransient(Object pc, boolean useFetchPlan)
Method to make transient an object allowing fetching using the fetch plan.- Specified by:
makeTransient
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The objectuseFetchPlan
- Whether to make transient all objects in the fetch plan
-
makeTransient
public void makeTransient(Object pc)
Method to make transient an object. This doesn't use the fetch plan and just makes the specified object transient.- Specified by:
makeTransient
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object
-
makeTransientAll
public void makeTransientAll(Object... pcs)
Method to make transient an array of objects.- Specified by:
makeTransientAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects
-
makeTransientAll
public void makeTransientAll(boolean includeFetchPlan, Object... pcs)
Method to make transient an array of objects.- Specified by:
makeTransientAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
includeFetchPlan
- Whether to make transient all objects in the fetch planpcs
- The objects
-
makeTransientAll
public void makeTransientAll(Collection pcs, boolean useFetchPlan)
Method to make transient a collection of objects.- Specified by:
makeTransientAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objectsuseFetchPlan
- Whether to use the fetch plan when making transient- Throws:
javax.jdo.JDOUserException
- thrown if objects could not be made transient.
-
makeTransientAll
public void makeTransientAll(Collection pcs)
Method to make transient a collection of objects.- Specified by:
makeTransientAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects- Throws:
javax.jdo.JDOUserException
- thrown if objects could not be made transient.
-
makeTransactional
public void makeTransactional(Object pc)
Method to make transactional an object.- Specified by:
makeTransactional
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object
-
makeTransactionalAll
public void makeTransactionalAll(Object... pcs)
Method to make transactional an array of objects.- Specified by:
makeTransactionalAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects
-
makeTransactionalAll
public void makeTransactionalAll(Collection pcs)
Method to make transactional a collection of objects.- Specified by:
makeTransactionalAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects- Throws:
javax.jdo.JDOUserException
- thrown if objects could not be made transactional
-
makeNontransactional
public void makeNontransactional(Object pc)
Method to make nontransactional an object.- Specified by:
makeNontransactional
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object
-
makeNontransactionalAll
public void makeNontransactionalAll(Object... pcs)
Method to make nontransactional an array of objects.- Specified by:
makeNontransactionalAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects.
-
makeNontransactionalAll
public void makeNontransactionalAll(Collection pcs)
Method to make nontransactional a collection of objects.- Specified by:
makeNontransactionalAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- The objects.- Throws:
javax.jdo.JDOUserException
- thrown if objects could not be made nontransactional
-
detachCopy
public <T> T detachCopy(T pc)
JDO method to detach a persistent object. If the object is of class that is not detachable a transient copy will be returned. If the object is not persistent it will be persisted first before detaching a copy.- Specified by:
detachCopy
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object- Returns:
- The detached object
-
detachCopyAll
public <T> T[] detachCopyAll(T... pcs)
Detach the specified objects from thePersistenceManager
. The objects returned can be manipulated and re-attached withmakePersistentAll(Object[])
. The detached instances will be unmanaged copies of the specified parameters, and are suitable for serialization and manipulation outside of a JDO environment. When detaching instances, only fields in the currentFetchPlan
will be traversed. Thus, to detach a graph of objects, relations to other persistent instances must either be in thedefault-fetch-group
, or in the current customFetchPlan
.- Specified by:
detachCopyAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- the instances to detach- Returns:
- the detached instances
-
detachCopyAll
public <T> Collection<T> detachCopyAll(Collection<T> pcs)
Detach the specified objects from thePersistenceManager
.- Specified by:
detachCopyAll
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcs
- the instances to detach- Returns:
- the detached instances
- See Also:
detachCopyAll(Object[])
-
newQuery
public javax.jdo.Query newQuery()
Construct an empty query instance.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Returns:
- The query
-
newQuery
public javax.jdo.Query newQuery(Object obj)
Construct a query instance from another query. The parameter might be a serialized/restored Query instance from the same JDO vendor but a different execution environment, or the parameter might be currently bound to a PersistenceManager from the same JDO vendor. Any of the elements Class, Filter, IgnoreCache flag, Import declarations, Variable declarations, Parameter declarations, and Ordering from the parameter Query are copied to the new Query instance, but a candidate Collection or Extent element is discarded.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Parameters:
obj
- The object to use in the query- Returns:
- The query
-
newQuery
public javax.jdo.Query newQuery(String query)
Construct a query instance using the specified Single-String query.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Parameters:
query
- The single-string query- Returns:
- The Query
-
newQuery
public javax.jdo.Query newQuery(String language, Object query)
Construct a query instance using the specified language and the specified query. The query instance will be of a class defined by the query language.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Parameters:
language
- The language parameter for the JDO Query language. This is by default "javax.jdo.query.JDOQL", but in JDO 2.0 can also be "javax.jdo.query.SQL", or vendor provided languages.query
- The query object- Returns:
- The query
-
newQuery
public <T> javax.jdo.Query<T> newQuery(Class<T> cls)
Construct a query instance with the candidate class specified.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cls
- The class to query- Returns:
- The query
-
newQuery
public <T> javax.jdo.Query<T> newQuery(javax.jdo.Extent<T> cln)
Construct a query instance with the candidate Extent specified; the candidate class is taken from the Extent.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cln
- The extent to query- Returns:
- The query
-
newQuery
public <T> javax.jdo.Query<T> newQuery(Class<T> cls, Collection<T> cln)
Construct a query instance with the candidate class and candidate Collection specified.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cls
- The class to querycln
- The collection- Returns:
- The query
-
newQuery
public <T> javax.jdo.Query<T> newQuery(Class<T> cls, String filter)
Construct a query instance with the candidate class and filter specified.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cls
- The class to queryfilter
- A filter to apply- Returns:
- The query
-
newQuery
public <T> javax.jdo.Query<T> newQuery(Class<T> cls, Collection<T> cln, String filter)
Construct a query instance with the candidate class, the candidate Collection, and filter specified.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cls
- The class to querycln
- A collectionfilter
- A filter to apply- Returns:
- The query
-
newQuery
public <T> javax.jdo.Query<T> newQuery(javax.jdo.Extent<T> cln, String filter)
Construct a query instance with the candidate Extent and filter specified. The candidate class is taken from the Extent.- Specified by:
newQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cln
- The extent to queryfilter
- A filter to apply- Returns:
- The query
-
newJDOQLTypedQuery
public <T> javax.jdo.JDOQLTypedQuery<T> newJDOQLTypedQuery(Class<T> cls)
Construct a JDOQLTypedQuery instance for the specified candidate.- Specified by:
newJDOQLTypedQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cls
- Candidate class- Returns:
- The JDOQLTypedQuery
-
newNamedQuery
public <T> javax.jdo.Query<T> newNamedQuery(Class<T> cls, String queryName)
Construct a query instance with the candidate class and the query name.- Specified by:
newNamedQuery
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- Candidate type for the query- Parameters:
cls
- The class to queryqueryName
- Name of the query.- Returns:
- The query
-
getExtent
public <T> javax.jdo.Extent<T> getExtent(Class<T> pcClass, boolean subclasses)
Extents are collections of datastore objects managed by the datastore, not by explicit user operations on collections. Extent capability is a boolean property of classes that are persistence capable. If an instance of a class that has a managed extent is made persistent via reachability, the instance is put into the extent implicitly.- Specified by:
getExtent
in interfacejavax.jdo.PersistenceManager
- Type Parameters:
T
- candidate type- Parameters:
pcClass
- The class to querysubclasses
- Whether to include subclasses in the query.- Returns:
- returns an Extent that contains all of the instances in the parameter class, and if the subclasses flag is true, all of the instances of the parameter class and its subclasses.
-
getExtent
public <T> javax.jdo.Extent<T> getExtent(Class<T> pcClass)
Extents are collections of datastore objects managed by the datastore, not by explicit user operations on collections. Extent capability is a boolean property of classes that are persistence capable. If an instance of a class that has a managed extent is made persistent via reachability, the instance is put into the extent implicitly.- Specified by:
getExtent
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcClass
- The class to query- Returns:
- returns an Extent that contains all of the instances in the parameter class, and all of the instances of the parameter class and its subclasses.
-
newInstance
public <T> T newInstance(Class<T> pc)
Method to generate an instance of an interface, abstract class, or concrete PC class.- Specified by:
newInstance
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The class of the interface or abstract class, or concrete class defined in MetaData- Returns:
- The instance of this type
-
newObjectIdInstance
public Object newObjectIdInstance(Class pcClass, Object key)
This method returns an object id instance corresponding to the pcClass and key arguments. It has 2 modes of operation. Where SingleFieldIdentity is being used the key is the value of the key field. For all other cases the key is the String form of the object id instance.- Specified by:
newObjectIdInstance
in interfacejavax.jdo.PersistenceManager
- Parameters:
pcClass
- Class of the persistable to create the OID for.key
- Value of the key for SingleFieldIdentity, or toString() for other cases- Returns:
- The new object-id instance
-
getManagedObjects
public Set getManagedObjects()
Accessor for the objects currently managed by this PM in the current transaction.- Specified by:
getManagedObjects
in interfacejavax.jdo.PersistenceManager
- Returns:
- The managed objects
-
getManagedObjects
public Set getManagedObjects(Class... classes)
Accessor for the objects currently managed by this PM in the current transaction.- Specified by:
getManagedObjects
in interfacejavax.jdo.PersistenceManager
- Parameters:
classes
- Classes that we want objects for- Returns:
- The managed objects
-
getManagedObjects
public Set getManagedObjects(EnumSet states)
Accessor for the objects currently managed by this PM in the current transaction.- Specified by:
getManagedObjects
in interfacejavax.jdo.PersistenceManager
- Parameters:
states
- States that we want objects for- Returns:
- The managed objects
-
getManagedObjects
public Set getManagedObjects(EnumSet states, Class... classes)
Accessor for the objects currently managed by this PM in the current transaction.- Specified by:
getManagedObjects
in interfacejavax.jdo.PersistenceManager
- Parameters:
states
- States that we want objects forclasses
- Classes that we want objects for- Returns:
- The managed objects
-
getObjectById
public Object getObjectById(Object id)
Accessor for an object given the object id.- Specified by:
getObjectById
in interfacejavax.jdo.PersistenceManager
- Parameters:
id
- Id of the object.- Returns:
- The Object
-
getObjectById
public Object getObjectById(Object id, boolean validate)
Accessor for an object given the object id.- Specified by:
getObjectById
in interfacejavax.jdo.PersistenceManager
- Parameters:
id
- Id of the object.validate
- Whether to validate the object state- Returns:
- The Object
-
getObjectById
public <T> T getObjectById(Class<T> cls, Object key)
Method to look up the instance of the given type with the given key.- Specified by:
getObjectById
in interfacejavax.jdo.PersistenceManager
- Parameters:
cls
- Class of the persistablekey
- Value of the key field for SingleFieldIdentity, or the string value of the key otherwise- Returns:
- The object for this id.
-
getObjectsById
public Object[] getObjectsById(boolean validate, Object... oids)
Accessor for the objects given the object ids.- Specified by:
getObjectsById
in interfacejavax.jdo.PersistenceManager
- Parameters:
validate
- Whether to validate the object stateoids
- Ids of the objects.- Returns:
- The Objects with these ids (in the same order)
-
getObjectsById
public Object[] getObjectsById(Object... oids)
Accessor for the objects given the object ids, validating the objects.- Specified by:
getObjectsById
in interfacejavax.jdo.PersistenceManager
- Parameters:
oids
- Ids of the objects.- Returns:
- The Objects with these ids (in the same order)
-
getObjectsById
public Collection getObjectsById(Collection oids)
Accessor for the objects given the object ids, validating the objects.- Specified by:
getObjectsById
in interfacejavax.jdo.PersistenceManager
- Parameters:
oids
- Ids of the objects.- Returns:
- The Objects with these ids (in the same order)
-
getObjectsById
public Collection getObjectsById(Collection oids, boolean validate)
Accessor for the objects given the object ids.- Specified by:
getObjectsById
in interfacejavax.jdo.PersistenceManager
- Parameters:
oids
- Ids of the objects.validate
- Whether to validate the object state- Returns:
- The Objects with these ids (in the same order)
-
getObjectByUnique
public <T> T getObjectByUnique(Class<T> cls, String[] fieldNames, Object[] fieldValues)
Method to look up the instance of the given type with the given key.- Type Parameters:
T
- Type of the object- Parameters:
cls
- Class of the persistablefieldNames
- Name(s) of the field(s) making up the unique keyfieldValues
- Value(s) for the field(s) making up the unique key- Returns:
- The object meeting this selection.
-
getObjectId
public Object getObjectId(Object pc)
Accessor for an object id given the object.- Specified by:
getObjectId
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object- Returns:
- The Object id
-
getTransactionalObjectId
public Object getTransactionalObjectId(Object pc)
Accessor for the object id of a transactional object given the object.- Specified by:
getTransactionalObjectId
in interfacejavax.jdo.PersistenceManager
- Parameters:
pc
- The object- Returns:
- The Object id
-
getObjectIdClass
public Class getObjectIdClass(Class cls)
Accessor for the class of the object id given the class of object.- Specified by:
getObjectIdClass
in interfacejavax.jdo.PersistenceManager
- Parameters:
cls
- The class name of the object- Returns:
- The class name of the object id
-
putUserObject
public Object putUserObject(Object key, Object value)
Method to put a user object into the PersistenceManager. This is so that multiple users can each have a user object for example. The parameter is not inspected or used in any way by the JDO implementation.- Specified by:
putUserObject
in interfacejavax.jdo.PersistenceManager
- Parameters:
key
- The key to store the user object undervalue
- The object to store- Returns:
- The previous value for this key
-
getUserObject
public Object getUserObject(Object key)
Method to get a user object from the PersistenceManager. This is for user objects which are stored under a key. The parameter is not inspected or used in any way by the JDO implementation.- Specified by:
getUserObject
in interfacejavax.jdo.PersistenceManager
- Parameters:
key
- The key to store the user object under- Returns:
- The user object for that key
-
removeUserObject
public Object removeUserObject(Object key)
Method to remove a user object from the PersistenceManager. This is for user objects which are stored under a key. The parameter is not inspected or used in any way by the JDO implementation.- Specified by:
removeUserObject
in interfacejavax.jdo.PersistenceManager
- Parameters:
key
- The key whose uder object is to be removed.- Returns:
- The user object that was removed
-
setUserObject
public void setUserObject(Object userObject)
The application might manage PersistenceManager instances by using an associated object for bookkeeping purposes. These methods allow the user to manage the associated object. The parameter is not inspected or used in any way by the JDO implementation.- Specified by:
setUserObject
in interfacejavax.jdo.PersistenceManager
- Parameters:
userObject
- The object
-
getUserObject
public Object getUserObject()
The application might manage PersistenceManager instances by using an associated object for bookkeeping purposes. These methods allow the user to manage the associated object. The parameter is not inspected or used in any way by the JDO implementation.- Specified by:
getUserObject
in interfacejavax.jdo.PersistenceManager
- Returns:
- The user object
-
flush
public void flush()
This method flushes all dirty, new, and deleted instances to the datastore. It has no effect if a transaction is not active. If a datastore transaction is active, this method synchronizes the cache with the datastore and reports any exceptions. If an optimistic transaction is active, this method obtains a datastore connection and synchronizes the cache with the datastore using this connection. The connection obtained by this method is held until the end of the transaction.- Specified by:
flush
in interfacejavax.jdo.PersistenceManager
-
checkConsistency
public void checkConsistency()
This method validates the cache with the datastore. It has no effect if a transaction is not active. If a datastore transaction is active, this method verifies the consistency of instances in the cache against the datastore. An implementation might flush instances as if flush() were called, but it is not required to do so. If an optimistic transaction is active, this method obtains a datastore connection and verifies the consistency of the instances in the cache against the datastore. If any inconsistencies are detected, a JDOOptimisticVerificationException is thrown. This exception contains a nested JDOOptimisticVerificationException for each object that failed the consistency check. No datastore resources acquired during the execution of this method are held beyond the scope of this method.- Specified by:
checkConsistency
in interfacejavax.jdo.PersistenceManager
-
getSequence
public javax.jdo.datastore.Sequence getSequence(String sequenceName)
Method to retrieve a sequence by name. As per JDO2 spec section 12.14. If the named sequence is not known, throws a JDOUserException.- Specified by:
getSequence
in interfacejavax.jdo.PersistenceManager
- Parameters:
sequenceName
- Fully qualified name of the sequence- Returns:
- The sequence
-
addInstanceLifecycleListener
public void addInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener, Class... classes)
Method to register a lifecycle listener as per JDO 2.0 spec 12.15.- Specified by:
addInstanceLifecycleListener
in interfacejavax.jdo.PersistenceManager
- Parameters:
listener
- The instance lifecycle listener to sends events toclasses
- The classes that it is interested in
-
removeInstanceLifecycleListener
public void removeInstanceLifecycleListener(javax.jdo.listener.InstanceLifecycleListener listener)
Method to remove a currently registered lifecycle listener, as per JDO 2.0 spec 12.15.- Specified by:
removeInstanceLifecycleListener
in interfacejavax.jdo.PersistenceManager
- Parameters:
listener
- The instance lifecycle listener to remove.
-
assertIsOpen
protected void assertIsOpen()
Method to assert if this Persistence Manager is open.- Throws:
javax.jdo.JDOFatalUserException
- if the PM is closed.
-
assertActiveTransaction
protected void assertActiveTransaction()
Method to assert if the current transaction is active. Throws a TransactionNotActiveException if not active.
-
assertWritable
protected void assertWritable()
Method to assert if the current transaction is active or non transactional writes are allowed. Throws a TransactionNotWritableException if not active and non transactional writes are disabled
-
assertReadable
protected void assertReadable(String operation)
Method to assert if no active transaction and nontransactionalRead is not set. Throws JDOUserException if the tx is not active and no non-transactional read is available- Parameters:
operation
- The operation
-
hasPersistenceInformationForClass
protected boolean hasPersistenceInformationForClass(Class cls)
Utility method to check if the specified class has reachable metadata/annotations.- Parameters:
cls
- The class to check- Returns:
- Whether the class has reachable metadata/annotations.
-
getDataStoreConnection
public javax.jdo.datastore.JDOConnection getDataStoreConnection()
Accessor for a connection on the datastore. See JDO 2.0 spec section 12.16- Specified by:
getDataStoreConnection
in interfacejavax.jdo.PersistenceManager
- Returns:
- The JDO connection to the datastore
- See Also:
PersistenceManager.getDataStoreConnection()
-
getFetchGroup
public javax.jdo.FetchGroup getFetchGroup(Class cls, String name)
Method to return a fetch group for the specified class, with the specified name.- Specified by:
getFetchGroup
in interfacejavax.jdo.PersistenceManager
- Parameters:
cls
- The classname
- The name of the fetch group- Returns:
- FetchGroup
-
setProperty
public void setProperty(String propertyName, Object value)
Set a persistence manager property. This can be a standard property or a vendor-extension property. If a vendor-extension property is not recognized, it is silently ignored.- Specified by:
setProperty
in interfacejavax.jdo.PersistenceManager
- Parameters:
propertyName
- name of propertyvalue
- The value- Throws:
javax.jdo.JDOUserException
- if the value is not supported for the property- Since:
- JDO3.1
-
getProperties
public Map<String,Object> getProperties()
Get the properties and associated values currently in effect for the persistence manager. Changing entries in the map will not have affect the configuration of the persistence manager.- Specified by:
getProperties
in interfacejavax.jdo.PersistenceManager
- Returns:
- map of properties in effect
- Since:
- JDO3.1
-
getSupportedProperties
public Set<String> getSupportedProperties()
Get the names of the properties that are supported for use with the persistence manager. These can be standard JDO properties, or can be vendor-extension properties.- Specified by:
getSupportedProperties
in interfacejavax.jdo.PersistenceManager
- Returns:
- property names Names of the properties accepted
- Since:
- JDO3.1
-
addTransactionEventListener
public void addTransactionEventListener(org.datanucleus.transaction.TransactionEventListener listener)
Convenience method to add a listener for transaction events (begin, commit, rollback).- Parameters:
listener
- The listener.
-
removeTransactionEventListener
public void removeTransactionEventListener(org.datanucleus.transaction.TransactionEventListener listener)
Convenience method to remove the supplied listener from transaction event notification.- Parameters:
listener
- The listener
-
-