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 Details

    • LOGGER

      public static final org.datanucleus.util.NucleusLogger LOGGER
      Logger for JDO.
    • closed

      private boolean closed
    • userObjectMap

      private Map<Object,Object> userObjectMap
      Map of user objects attached to this PM.
    • userObject

      private Object userObject
      User object attached to the PM.
    • ec

      protected org.datanucleus.ExecutionContext ec
      Backing ExecutionContext for this PersistenceManager.
    • jdotx

      protected javax.jdo.Transaction jdotx
    • pmf

      Owning PersistenceManagerFactory.
    • fetchPlan

      protected JDOFetchPlan fetchPlan
      JDO Fetch Plan.
    • jdoFetchGroups

      private Set<JDOFetchGroup> jdoFetchGroups
      JDO Fetch Groups.
  • Constructor Details

    • JDOPersistenceManager

      public JDOPersistenceManager(JDOPersistenceManagerFactory pmf, String userName, String password)
      Constructor.
      Parameters:
      pmf - Persistence Manager Factory
      userName - Username for the datastore
      password - Password for the datastore
  • Method Details

    • close

      public void close()
      Method to close the Persistence Manager.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface javax.jdo.PersistenceManager
    • isClosed

      public boolean isClosed()
      Accessor for whether this ExecutionContext is closed.
      Specified by:
      isClosed in interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Returns:
      Whether to copy objects on attaching.
    • getFetchPlan

      public javax.jdo.FetchPlan getFetchPlan()
      Acessor for the current FetchPlan
      Specified by:
      getFetchPlan in interface javax.jdo.PersistenceManager
      Returns:
      The FetchPlan
    • getIgnoreCache

      public boolean getIgnoreCache()
      Accessor for whether to ignore the cache.
      Specified by:
      getIgnoreCache in interface javax.jdo.PersistenceManager
      Returns:
      Whether to ignore the cache.
    • getMultithreaded

      public boolean getMultithreaded()
      Accessor for whether the Persistence Manager is multithreaded.
      Specified by:
      getMultithreaded in interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      timeout - Datastore read timeout interval (millisecs)
    • getDatastoreReadTimeoutMillis

      public Integer getDatastoreReadTimeoutMillis()
      Accessor for the datastore read timeout (milliseconds).
      Specified by:
      getDatastoreReadTimeoutMillis in interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      timeout - Datastore write timeout interval (millisecs)
    • getDatastoreWriteTimeoutMillis

      public Integer getDatastoreWriteTimeoutMillis()
      Accessor for the datastore write timeout (milliseconds).
      Specified by:
      getDatastoreWriteTimeoutMillis in interface javax.jdo.PersistenceManager
      Returns:
      datastore write timeout
    • getServerDate

      public Date getServerDate()
      Accessor for the date on the datastore.
      Specified by:
      getServerDate in interface javax.jdo.PersistenceManager
      Returns:
      Date on the datastore
    • currentTransaction

      public javax.jdo.Transaction currentTransaction()
      Accessor for the current transaction.
      Specified by:
      currentTransaction in interface javax.jdo.PersistenceManager
      Returns:
      The transaction
    • jdoEvict

      private void jdoEvict(Object obj)
      JDO Convenience method to wrap any DataNucleus exceptions for the evict process.
      Parameters:
      obj - The object to evict
      Throws:
      javax.jdo.JDOUserException - thrown if some instances could not be evicted
    • evict

      public void evict(Object obj)
      Method to evict an object from L1 cache.
      Specified by:
      evict in interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      subclasses - Whether to include subclasses
      cls - Type of persistable object
    • evictAll

      public void evictAll(Object... pcs)
      Method to evict an array of objects from L1 cache.
      Specified by:
      evictAll in interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
    • jdoRefresh

      private void jdoRefresh(Object obj)
      JDO Convenience method to wrap any DataNucleus exceptions for the refresh process.
      Parameters:
      obj - The object to refresh
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be refreshed
    • refresh

      public void refresh(Object obj)
      Method to do a refresh of an object.
      Specified by:
      refresh in interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
      useFetchPlan - 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 interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
    • retrieveAll

      public void retrieveAll(Object... pcs)
      Method to retrieve an array of objects.
      Specified by:
      retrieveAll in interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      useFetchPlan - whether to retrieve only the current fetch plan fields
      pcs - the instances
    • retrieveAll

      public void retrieveAll(Collection pcs, boolean useFetchPlan)
      Retrieve field values of instances from the store. This tells the PersistenceManager 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. The PersistenceManager might use policy information about the class to retrieve associated instances.
      Specified by:
      retrieveAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - the instances
      useFetchPlan - 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 interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects
    • jdoMakePersistent

      private <T> T jdoMakePersistent(T obj)
      JDO Convenience method to wrap any DataNucleus exceptions for the makePersistent process.
      Parameters:
      obj - The object to persist
      Returns:
      The persistent object
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be persisted
    • makePersistent

      public <T> T makePersistent(T obj)
      JDO method to persist an object. Will also attach a previously detached object.
      Specified by:
      makePersistent in interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects to persist
      Returns:
      The persistent objects
    • jdoDeletePersistent

      private void jdoDeletePersistent(Object obj)
      JDO Convenience method to wrap any DataNucleus exceptions for the deletePersistent process.
      Parameters:
      obj - The object to delete
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be deleted
    • deletePersistent

      public void deletePersistent(Object obj)
      JDO method to delete an object from the datastore.
      Specified by:
      deletePersistent in interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects
      Throws:
      javax.jdo.JDOUserException - Thrown if one (or more) object cannot be deleted
    • jdoMakeTransient

      private void jdoMakeTransient(Object pc, org.datanucleus.FetchPlanState state)
      JDO Convenience method to wrap any DataNucleus exceptions for the makeTransient process.
      Parameters:
      pc - The object to make transient
      state - FetchPlanState
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be made transient
    • makeTransient

      public void makeTransient(Object pc, boolean useFetchPlan)
      Method to make transient an object allowing fetching using the fetch plan.
      Specified by:
      makeTransient in interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
      useFetchPlan - 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 interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
    • makeTransientAll

      public void makeTransientAll(Object... pcs)
      Method to make transient an array of objects.
      Specified by:
      makeTransientAll in interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      includeFetchPlan - Whether to make transient all objects in the fetch plan
      pcs - The objects
    • makeTransientAll

      public void makeTransientAll(Collection pcs, boolean useFetchPlan)
      Method to make transient a collection of objects.
      Specified by:
      makeTransientAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects
      useFetchPlan - 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 interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects
      Throws:
      javax.jdo.JDOUserException - thrown if objects could not be made transient.
    • jdoMakeTransactional

      private void jdoMakeTransactional(Object pc)
      JDO Convenience method to wrap any DataNucleus exceptions for the makeTransactional process.
      Parameters:
      pc - The object to make transactional
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be made transactional
    • makeTransactional

      public void makeTransactional(Object pc)
      Method to make transactional an object.
      Specified by:
      makeTransactional in interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
    • makeTransactionalAll

      public void makeTransactionalAll(Object... pcs)
      Method to make transactional an array of objects.
      Specified by:
      makeTransactionalAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects
    • makeTransactionalAll

      public void makeTransactionalAll(Collection pcs)
      Method to make transactional a collection of objects.
      Specified by:
      makeTransactionalAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects
      Throws:
      javax.jdo.JDOUserException - thrown if objects could not be made transactional
    • jdoMakeNontransactional

      private void jdoMakeNontransactional(Object obj)
      JDO Convenience method to wrap any DataNucleus exceptions for the makeNontransactional process.
      Parameters:
      obj - The object to make nontransactional
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be made nontransactional
    • makeNontransactional

      public void makeNontransactional(Object pc)
      Method to make nontransactional an object.
      Specified by:
      makeNontransactional in interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
    • makeNontransactionalAll

      public void makeNontransactionalAll(Object... pcs)
      Method to make nontransactional an array of objects.
      Specified by:
      makeNontransactionalAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects.
    • makeNontransactionalAll

      public void makeNontransactionalAll(Collection pcs)
      Method to make nontransactional a collection of objects.
      Specified by:
      makeNontransactionalAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - The objects.
      Throws:
      javax.jdo.JDOUserException - thrown if objects could not be made nontransactional
    • jdoDetachCopy

      private <T> T jdoDetachCopy(T obj, org.datanucleus.FetchPlanState state)
      JDO Convenience method to wrap any DataNucleus exceptions for the detachCopy process.
      Parameters:
      obj - The object to detach a copy of
      state - DetachState
      Throws:
      javax.jdo.JDOUserException - thrown if the object could not be detached
    • 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 interface javax.jdo.PersistenceManager
      Parameters:
      pc - The object
      Returns:
      The detached object
    • detachCopyAll

      public <T> T[] detachCopyAll(T... pcs)
      Detach the specified objects from the PersistenceManager. The objects returned can be manipulated and re-attached with makePersistentAll(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 current FetchPlan will be traversed. Thus, to detach a graph of objects, relations to other persistent instances must either be in the default-fetch-group, or in the current custom FetchPlan.
      Specified by:
      detachCopyAll in interface javax.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 the PersistenceManager.
      Specified by:
      detachCopyAll in interface javax.jdo.PersistenceManager
      Parameters:
      pcs - the instances to detach
      Returns:
      the detached instances
      See Also:
    • newQuery

      public javax.jdo.Query newQuery()
      Construct an empty query instance.
      Specified by:
      newQuery in interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Type Parameters:
      T - Candidate type for the query
      Parameters:
      cls - The class to query
      cln - 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 interface javax.jdo.PersistenceManager
      Type Parameters:
      T - Candidate type for the query
      Parameters:
      cls - The class to query
      filter - 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 interface javax.jdo.PersistenceManager
      Type Parameters:
      T - Candidate type for the query
      Parameters:
      cls - The class to query
      cln - A collection
      filter - 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 interface javax.jdo.PersistenceManager
      Type Parameters:
      T - Candidate type for the query
      Parameters:
      cln - The extent to query
      filter - 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 interface javax.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 interface javax.jdo.PersistenceManager
      Type Parameters:
      T - Candidate type for the query
      Parameters:
      cls - The class to query
      queryName - 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 interface javax.jdo.PersistenceManager
      Type Parameters:
      T - candidate type
      Parameters:
      pcClass - The class to query
      subclasses - 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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      states - States that we want objects for
      classes - 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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      cls - Class of the persistable
      key - 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 interface javax.jdo.PersistenceManager
      Parameters:
      validate - Whether to validate the object state
      oids - 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 interface javax.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 interface javax.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 interface javax.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 persistable
      fieldNames - Name(s) of the field(s) making up the unique key
      fieldValues - 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 interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      key - The key to store the user object under
      value - 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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      listener - The instance lifecycle listener to sends events to
      classes - 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 interface javax.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 interface javax.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 interface javax.jdo.PersistenceManager
      Parameters:
      cls - The class
      name - 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 interface javax.jdo.PersistenceManager
      Parameters:
      propertyName - name of property
      value - 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 interface javax.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 interface javax.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