| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| <<<<<<< Updated upstream |
| * |
| * https://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| ======= |
| * |
| * https://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| >>>>>>> Stashed changes |
| * limitations under the License. |
| */ |
| |
| /* |
| * PersistenceManager.java |
| * |
| */ |
| package javax.jdo; |
| |
| import java.util.Collection; |
| import java.util.Date; |
| import java.util.EnumSet; |
| import java.util.Map; |
| import java.util.Set; |
| import javax.jdo.datastore.JDOConnection; |
| import javax.jdo.datastore.Sequence; |
| import javax.jdo.listener.InstanceLifecycleListener; |
| |
| /** |
| * <code>PersistenceManager</code> is the primary interface for JDO-aware application components. It |
| * is the factory for <code>Query</code> and <code>Transaction</code> instances, and contains |
| * methods to manage the life cycle of <code>PersistenceCapable</code> instances. |
| * |
| * <p>A <code>PersistenceManager</code> is obtained from the {@link PersistenceManagerFactory} |
| * (recommended) or by construction. |
| * |
| * @version 2.1 |
| */ |
| public interface PersistenceManager extends AutoCloseable { |
| /** |
| * A <code>PersistenceManager</code> instance can be used until it is closed. |
| * |
| * @return <code>true</code> if this <code>PersistenceManager</code> has been closed. |
| * @see #close() |
| */ |
| boolean isClosed(); |
| |
| /** |
| * Close this <code>PersistenceManager</code> so that no further requests may be made on it. A |
| * <code>PersistenceManager</code> instance can be used only until it is closed. |
| * |
| * <p>Closing a <code>PersistenceManager</code> might release it to the pool of available <code> |
| * PersistenceManager</code>s, or might be garbage collected, at the option of the JDO |
| * implementation. Before being used again to satisfy a <code>getPersistenceManager()</code> |
| * request, the default values for options will be restored to their values as specified in the |
| * <code>PersistenceManagerFactory</code>. |
| * |
| * <p>This method closes the <code>PersistenceManager</code>. |
| */ |
| void close(); |
| |
| /** |
| * Return the <code>Transaction</code> instance associated with a <code>PersistenceManager</code>. |
| * There is one <code>Transaction</code> instance associated with each <code>PersistenceManager |
| * </code> instance. The <code>Transaction</code> instance supports options as well as transaction |
| * completion requests. |
| * |
| * @return the <code>Transaction</code> associated with this <code>PersistenceManager</code>. |
| */ |
| Transaction currentTransaction(); |
| |
| /** |
| * Mark an instance as no longer needed in the cache. Eviction is normally done automatically by |
| * the <code>PersistenceManager</code> at transaction completion. This method allows the |
| * application to explicitly provide a hint to the <code>PersistenceManager</code> that the |
| * instance is no longer needed in the cache. |
| * |
| * @param pc the instance to evict from the cache. |
| */ |
| void evict(Object pc); |
| |
| /** |
| * Mark an array of instances as no longer needed in the cache. |
| * |
| * @see #evict(Object pc) |
| * @param pcs the array of instances to evict from the cache. |
| */ |
| void evictAll(Object... pcs); |
| |
| /** |
| * Mark a <code>Collection</code> of instances as no longer needed in the cache. |
| * |
| * @see #evict(Object pc) |
| * @param pcs the <code>Collection</code> of instances to evict from the cache. |
| */ |
| void evictAll(Collection<?> pcs); |
| |
| /** |
| * Mark the parameter instances as no longer needed in the cache. |
| * |
| * @param pcClass the class of instances to evict |
| * @param subclasses if true, mark instances of subclasses also |
| * @since 2.1 |
| */ |
| void evictAll(boolean subclasses, Class<?> pcClass); |
| |
| /** |
| * Mark all persistent-nontransactional instances as no longer needed in the cache. It transitions |
| * all persistent-nontransactional instances to hollow. Transactional instances are subject to |
| * eviction based on the RetainValues setting. |
| * |
| * @see #evict(Object pc) |
| */ |
| void evictAll(); |
| |
| /** |
| * Refresh the state of the instance from the data store. |
| * |
| * <p>In an optimistic transaction, the state of instances in the cache might not match the state |
| * in the data store. This method is used to reload the state of the instance from the data store |
| * so that a subsequent commit is more likely to succeed. |
| * |
| * <p>Outside a transaction, this method will refresh nontransactional state. |
| * |
| * @param pc the instance to refresh. |
| */ |
| void refresh(Object pc); |
| |
| /** |
| * Refresh the state of an array of instances from the data store. |
| * |
| * @see #refresh(Object pc) |
| * @param pcs the array of instances to refresh. |
| */ |
| void refreshAll(Object... pcs); |
| |
| /** |
| * Refresh the state of a <code>Collection</code> of instances from the data store. |
| * |
| * @see #refresh(Object pc) |
| * @param pcs the <code>Collection</code> of instances to refresh. |
| */ |
| void refreshAll(Collection<?> pcs); |
| |
| /** |
| * Refresh the state of all applicable instances from the data store. |
| * |
| * <p>If called with an active transaction, all transactional instances will be refreshed. If |
| * called outside an active transaction, all nontransactional instances will be refreshed. |
| * |
| * @see #refresh(Object pc) |
| */ |
| void refreshAll(); |
| |
| /** |
| * Refreshes all instances in the exception that failed verification. |
| * |
| * @param jdoe The exception defining object(s) to be refreshed |
| * @since 2.0 |
| */ |
| void refreshAll(JDOException jdoe); |
| |
| /** |
| * Create a new <code>Query</code> with no elements. |
| * |
| * @return the new <code>Query</code>. |
| */ |
| Query newQuery(); |
| |
| /** |
| * Create a new <code>Query</code> using elements from another <code>Query</code>. The other |
| * <code>Query</code> must have been created by the same JDO implementation. It might be active in |
| * a different <code>PersistenceManager</code> or might have been serialized and restored. |
| * |
| * <p>All of the settings of the other <code>Query</code> are copied to this <code>Query</code>, |
| * except for the candidate <code>Collection</code> or <code>Extent</code>. |
| * |
| * @return the new <code>Query</code> |
| * @param compiled another <code>Query</code> from the same JDO implementation |
| */ |
| Query newQuery(Object compiled); |
| |
| /** |
| * Create a Construct a new query instance using the specified String as the single-string |
| * representation of the query. |
| * |
| * @param query the single-string query |
| * @return the new <code>Query</code> |
| * @since 2.0 |
| */ |
| Query newQuery(String query); |
| |
| /** |
| * Create a new <code>Query</code> using the specified language. |
| * |
| * @param language the language of the query parameter |
| * @param query the query, which is of a form determined by the language |
| * @return the new <code>Query</code> |
| */ |
| Query newQuery(String language, Object query); |
| |
| /** |
| * Create a new <code>Query</code> specifying the <code>Class</code> of the candidate instances. |
| * |
| * @param cls the <code>Class</code> of the candidate instances |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newQuery(Class<T> cls); |
| |
| /** |
| * Create a new <code>Query</code> with the <code>Class</code> of the candidate instances and |
| * candidate <code>Extent</code>. |
| * |
| * @param cln the <code>Extent</code> of candidate instances |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newQuery(Extent<T> cln); |
| |
| /** |
| * Create a new <code>Query</code> with the candidate <code>Class</code> and <code>Collection |
| * </code>. |
| * |
| * @param cls the <code>Class</code> of results |
| * @param cln the <code>Collection</code> of candidate instances |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newQuery(Class<T> cls, Collection<T> cln); |
| |
| /** |
| * Create a new <code>Query</code> with the <code>Class</code> of the candidate instances and |
| * filter. |
| * |
| * @param cls the <code>Class</code> of results |
| * @param filter the filter for candidate instances |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newQuery(Class<T> cls, String filter); |
| |
| /** |
| * Create a new <code>Query</code> with the <code>Class</code> of the candidate instances, |
| * candidate <code>Collection</code>, and filter. |
| * |
| * @param cls the <code>Class</code> of candidate instances |
| * @param cln the <code>Collection</code> of candidate instances |
| * @param filter the filter for candidate instances |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newQuery(Class<T> cls, Collection<T> cln, String filter); |
| |
| /** |
| * Create a new <code>Query</code> with the candidate <code>Extent</code> and filter; the class is |
| * taken from the <code>Extent</code>. |
| * |
| * @param cln the <code>Extent</code> of candidate instances |
| * @param filter the filter for candidate instances |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newQuery(Extent<T> cln, String filter); |
| |
| /** |
| * Create a new <code>JDOQLTypedQuery</code> with the specified candidate class. |
| * |
| * @param cls Candidate class for the query |
| * @return The JDOQLTypedQuery |
| * @param <T> Candidate type for the query |
| * @since 3.2 |
| */ |
| <T> JDOQLTypedQuery<T> newJDOQLTypedQuery(Class<T> cls); |
| |
| /** |
| * Create a new <code>Query</code> with the given candidate class from a named query. The query |
| * name given must be the name of a query defined in metadata. |
| * |
| * @param cls the <code>Class</code> of candidate instances |
| * @param queryName the name of the query to look up in metadata |
| * @return the new <code>Query</code> |
| * @param <T> Candidate type for the query |
| */ |
| <T> Query<T> newNamedQuery(Class<T> cls, String queryName); |
| |
| /** |
| * The <code>PersistenceManager</code> manages a collection of instances in the data store based |
| * on the class of the instances. This method returns an <code>Extent</code> of instances in the |
| * data store that might be iterated or given to a <code>Query</code>. The <code>Extent</code> |
| * itself might not reference any instances, but only hold the class name and an indicator as to |
| * whether subclasses are included in the <code>Extent</code>. |
| * |
| * <p>Note that the <code>Extent</code> might be very large. |
| * |
| * @param persistenceCapableClass <code>Class</code> of instances |
| * @param subclasses whether to include instances of subclasses |
| * @return an <code>Extent</code> of the specified <code>Class</code> |
| * @see Query |
| * @param <T> Type for the candidate of the Extent |
| */ |
| <T> Extent<T> getExtent(Class<T> persistenceCapableClass, boolean subclasses); |
| |
| /** |
| * Equivalent to <code>getExtent (persistenceCapableClass, true)</code>. |
| * |
| * @see #getExtent(Class,boolean) |
| * @since 2.0 |
| * @param persistenceCapableClass Candidate class for the extent |
| * @return an <code>Extent</code> of the specified <code>Class</code> |
| * @param <T> Type for the candidate of the Extent |
| */ |
| <T> Extent<T> getExtent(Class<T> persistenceCapableClass); |
| |
| /** |
| * This method locates a persistent instance in the cache of instances managed by this <code> |
| * PersistenceManager</code>. The <code>getObjectById</code> method attempts to find an instance |
| * in the cache with the specified JDO identity. The <code>oid</code> parameter object might have |
| * been returned by an earlier call to <code>getObjectId</code> or <code>getTransactionalObjectId |
| * </code>, or might have been constructed by the application. |
| * |
| * <p>If the <code>PersistenceManager</code> is unable to resolve the <code>oid</code> parameter |
| * to an ObjectId instance, then it throws a <code>JDOUserException</code>. |
| * |
| * <p>If the <code>validate</code> flag is <code>false</code>, and there is already an instance in |
| * the cache with the same JDO identity as the <code>oid</code> parameter, then this method |
| * returns it. There is no change made to the state of the returned instance. |
| * |
| * <p>If there is not an instance already in the cache with the same JDO identity as the <code>oid |
| * </code> parameter, then this method creates an instance with the specified JDO identity and |
| * returns it. If there is no transaction in progress, the returned instance will be hollow or |
| * persistent-nontransactional, at the choice of the implementation. |
| * |
| * <p>If there is a transaction in progress, the returned instance will be hollow, |
| * persistent-nontransactional, or persistent-clean, at the choice of the implementation. |
| * |
| * <p>It is an implementation decision whether to access the data store, if required to determine |
| * the exact class. This will be the case of inheritance, where multiple <code>PersistenceCapable |
| * </code> classes share the same ObjectId class. |
| * |
| * <p>If the validate flag is <code>false</code>, and the instance does not exist in the data |
| * store, then this method might not fail. It is an implementation choice whether to fail |
| * immediately with a <code>JDOObjectNotFoundException</code>. But a subsequent access of the |
| * fields of the instance will throw a <code>JDOObjectNotFoundException</code> if the instance |
| * does not exist at that time. Further, if a relationship is established to this instance, then |
| * the transaction in which the association was made will fail. |
| * |
| * <p>If the <code>validate</code> flag is <code>true</code>, and there is already a transactional |
| * instance in the cache with the same JDO identity as the <code>oid</code> parameter, then this |
| * method returns it. There is no change made to the state of the returned instance. |
| * |
| * <p>If there is an instance already in the cache with the same JDO identity as the <code>oid |
| * </code> parameter, but the instance is not transactional, then it must be verified in the data |
| * store. If the instance does not exist in the datastore, then a <code>JDOObjectNotFoundException |
| * </code> is thrown. |
| * |
| * <p>If there is not an instance already in the cache with the same JDO identity as the <code>oid |
| * </code> parameter, then this method creates an instance with the specified JDO identity, |
| * verifies that it exists in the data store, and returns it. If there is no transaction in |
| * progress, the returned instance will be hollow or persistent-nontransactional, at the choice of |
| * the implementation. |
| * |
| * <p>If there is a data store transaction in progress, the returned instance will be |
| * persistent-clean. If there is an optimistic transaction in progress, the returned instance will |
| * be persistent-nontransactional. |
| * |
| * @see #getObjectId(Object pc) |
| * @see #getTransactionalObjectId(Object pc) |
| * @return the <code>PersistenceCapable</code> instance with the specified ObjectId |
| * @param oid an ObjectId |
| * @param validate if the existence of the instance is to be validated |
| */ |
| Object getObjectById(Object oid, boolean validate); |
| |
| /** |
| * Looks up the instance of the given type with the given key. |
| * |
| * @param cls The type of object to load |
| * @param key either the string representation of the object id, or an object representation of a |
| * single field identity key |
| * @return the corresponding persistent instance |
| * @since 2.0 |
| * @param <T> Type of the persistable object being retrieved |
| */ |
| <T> T getObjectById(Class<T> cls, Object key); |
| |
| /** |
| * Looks up the instance corresponding to the specified oid. This is equivalent to <code> |
| * getObjectById(oid, true);</code> |
| * |
| * @param oid The object id of the object to load |
| * @return the corresponding persistent instance |
| */ |
| Object getObjectById(Object oid); |
| |
| /** |
| * The ObjectId returned by this method represents the JDO identity of the instance. The ObjectId |
| * is a copy (clone) of the internal state of the instance, and changing it does not affect the |
| * JDO identity of the instance. |
| * |
| * <p>The <code>getObjectId</code> method returns an ObjectId instance that represents the object |
| * identity of the specified JDO instance. The identity is guaranteed to be unique only in the |
| * context of the JDO <code>PersistenceManager</code> that created the identity, and only for two |
| * types of JDO Identity: those that are managed by the application, and those that are managed by |
| * the data store. |
| * |
| * <p>If the object identity is being changed in the transaction, by the application modifying one |
| * or more of the application key fields, then this method returns the identity as of the |
| * beginning of the transaction. The value returned by <code>getObjectId</code> will be different |
| * following <code>afterCompletion</code> processing for successful transactions. |
| * |
| * <p>Within a transaction, the ObjectId returned will compare equal to the ObjectId returned by |
| * only one among all JDO instances associated with the <code>PersistenceManager</code> regardless |
| * of the type of ObjectId. |
| * |
| * <p>The ObjectId does not necessarily contain any internal state of the instance, nor is it |
| * necessarily an instance of the class used to manage identity internally. Therefore, if the |
| * application makes a change to the ObjectId instance returned by this method, there is no effect |
| * on the instance from which the ObjectId was obtained. |
| * |
| * <p>The <code>getObjectById</code> method can be used between instances of <code> |
| * PersistenceManager</code> of different JDO vendors only for instances of persistence capable |
| * classes using application-managed (primary key) JDO identity. If it is used for instances of |
| * classes using datastore identity, the method might succeed, but there are no guarantees that |
| * the parameter and return instances are related in any way. |
| * |
| * @see #getTransactionalObjectId(Object pc) |
| * @see #getObjectById(Object oid, boolean validate) |
| * @param pc the <code>PersistenceCapable</code> instance |
| * @return the ObjectId of the instance |
| */ |
| Object getObjectId(Object pc); |
| |
| /** |
| * The ObjectId returned by this method represents the JDO identity of the instance. The ObjectId |
| * is a copy (clone) of the internal state of the instance, and changing it does not affect the |
| * JDO identity of the instance. |
| * |
| * <p>If the object identity is being changed in the transaction, by the application modifying one |
| * or more of the application key fields, then this method returns the current identity in the |
| * transaction. |
| * |
| * <p>If there is no transaction in progress, or if none of the key fields is being modified, then |
| * this method will return the same value as <code>getObjectId</code>. |
| * |
| * @see #getObjectId(Object pc) |
| * @see #getObjectById(Object oid, boolean validate) |
| * @param pc a <code>PersistenceCapable</code> instance |
| * @return the ObjectId of the instance |
| */ |
| Object getTransactionalObjectId(Object pc); |
| |
| /** |
| * This method returns an object id instance corresponding to the pcClass and key arguments. |
| * |
| * @param pcClass the <code>Class</code> of the persistence-capable instance |
| * @param key for single-field identity, the parameter for the constructor; for non-single-field |
| * application identity, the result of toString() on the object id instance. |
| * @return an instance of the object identity class |
| */ |
| Object newObjectIdInstance(Class<?> pcClass, Object key); |
| |
| /** |
| * Return the objects with the given oids. |
| * |
| * @param oids the oids of the objects to return |
| * @param validate if true, the existance of the objects in the datastore will be validated. |
| * @return the objects that were looked up, in the same order as the oids parameter. |
| * @see #getObjectById(Object,boolean) |
| * @since 2.0 |
| */ |
| Collection getObjectsById(Collection<?> oids, boolean validate); |
| |
| /** |
| * Return the objects with the given oids. This method is equivalent to calling {@link |
| * #getObjectsById(Collection, boolean)} with the validate flag true. |
| * |
| * @param oids the oids of the objects to return |
| * @return the objects that were looked up, in the same order as the oids parameter. |
| * @see #getObjectsById(Collection,boolean) |
| * @since 2.0 |
| */ |
| Collection getObjectsById(Collection<?> oids); |
| |
| /** |
| * Return the objects with the given oids. |
| * |
| * @param oids the oids of the objects to return |
| * @param validate if true, the existance of the objects in the datastore will be validated. |
| * @return the objects that were looked up, in the same order as the oids parameter. |
| * @see #getObjectById(Object,boolean) |
| * @since 2.1 |
| */ |
| Object[] getObjectsById(boolean validate, Object... oids); |
| |
| /** |
| * Return the objects with the given oids. This method is equivalent to calling {@link |
| * #getObjectsById(boolean,Object...)} with the validate flag true. |
| * |
| * @param oids the oids of the objects to return |
| * @return the objects that were looked up, in the same order as the oids parameter. |
| * @see #getObjectsById(boolean,Object...) |
| * @since 2.0 |
| */ |
| Object[] getObjectsById(Object... oids); |
| |
| /** |
| * Make the parameter instance persistent in this <code>PersistenceManager</code>. This method |
| * makes transient instances persistent and applies detached instance changes to the cache. It |
| * must be called in the context of an active transaction, or a JDOUserException is thrown. For a |
| * transient instance, it assigns an object identity to the instance and transitions it to |
| * persistent-new. Any transient instances reachable from this instance via persistent fields of |
| * this instance become provisionally persistent, transitively. That is, they behave as |
| * persistent-new instances (return true to isPersistent, isNew, and isDirty). But at commit time, |
| * the reachability algorithm is run again, and instances made provisionally persistent that are |
| * not then reachable from persistent instances will revert to transient. |
| * |
| * <p>During makePersistent of transient instances, the create life cycle listener is called. |
| * |
| * <p>For detached instances, it locates or instantiates a persistent instance with the same JDO |
| * identity as the detached instance, and merges the persistent state of the detached instance |
| * into the persistent instance. Only the state of persistent fields is merged. If non-persistent |
| * state needs to be copied, the application should use the jdoPostAttach callback or the |
| * postAttach lifecycle event listener. Any references to the detached instances from instances in |
| * the closure of the parameter instances are modified to refer to the corresponding persistent |
| * instance instead of to the detached instance. |
| * |
| * <p>During attachment of detached instances, the attach callbacks and attach life cycle |
| * listeners are called. |
| * |
| * <p>During application of changes of the detached state, if the JDO implementation can determine |
| * that there were no changes made during detachment, then the implementation is not required to |
| * mark the corresponding instance dirty. If it cannot determine if changes were made, then it |
| * must mark the instance dirty. No consistency checking is done during makePersistent of detached |
| * instances. If consistency checking is required by the application, then flush or |
| * checkConsistency should be called after attaching the instances. |
| * |
| * <p>These methods have no effect on parameter persistent instances already managed by this |
| * PersistenceManager. They will throw a JDOUserException if the parameter instance is managed by |
| * a different PersistenceManager. If an instance is of a class whose identity type (application, |
| * datastore, or none) is not supported by the JDO implementation, then a JDOUserException will be |
| * thrown for that instance. The return value for parameter instances in the transient or |
| * persistent states is the same as the parameter value. The return value for parameter instances |
| * in the detached state is the persistent instance corresponding to the detached instance. The |
| * return values for makePersistentAll methods correspond by position to the parameter instances. |
| * |
| * @param pc an instance of a <code>Class</code> that is persistent capable. |
| * @return the parameter instance for parameters in the transient or persistent state, or the |
| * corresponding persistent instance for detached parameter instances |
| * @param <T> Type of the persistable object |
| */ |
| <T> T makePersistent(T pc); |
| |
| /** |
| * Make an array of instances persistent. |
| * |
| * @param pcs an array of instances |
| * @return the parameter instances for parameters in the transient or persistent state, or the |
| * corresponding persistent instance for detached parameter instances, in the same order as in |
| * the parameter array |
| * @see #makePersistent(Object pc) |
| * @param <T> Type of the persistable object |
| */ |
| @SuppressWarnings({"unchecked", "varargs"}) |
| <T> T[] makePersistentAll(T... pcs); |
| |
| /** |
| * Make a <code>Collection</code> of instances persistent. |
| * |
| * @param pcs a <code>Collection</code> of instances |
| * @return the parameter instance for parameters in the transient or persistent state, or the |
| * corresponding persistent instance for detached parameter instances, with an iteration in |
| * the same order as in the parameter Collection |
| * @see #makePersistent(Object pc) |
| * @param <T> Type of the persistable object |
| */ |
| <T> Collection<T> makePersistentAll(Collection<T> pcs); |
| |
| /** |
| * Delete the persistent instance from the data store. This method must be called in an active |
| * transaction. The data store object will be removed at commit. Unlike <code>makePersistent |
| * </code>, which makes the closure of the instance persistent, the closure of the instance is not |
| * deleted from the data store. This method has no effect if the instance is already deleted in |
| * the current transaction. This method throws <code>JDOUserException</code> if the instance is |
| * transient or is managed by another <code>PersistenceManager</code>. |
| * |
| * @param pc a persistent instance |
| */ |
| void deletePersistent(Object pc); |
| |
| /** |
| * Delete an array of instances from the data store. |
| * |
| * @param pcs a <code>Collection</code> of persistent instances |
| * @see #deletePersistent(Object pc) |
| */ |
| void deletePersistentAll(Object... pcs); |
| |
| /** |
| * Delete a <code>Collection</code> of instances from the data store. |
| * |
| * @param pcs a <code>Collection</code> of persistent instances |
| * @see #deletePersistent(Object pc) |
| */ |
| void deletePersistentAll(Collection<?> pcs); |
| |
| /** |
| * Make an instance transient, removing it from management by this <code>PersistenceManager</code> |
| * . |
| * |
| * <p>The instance loses its JDO identity and it is no longer associated with any <code> |
| * PersistenceManager</code>. The state of fields is preserved unchanged. |
| * |
| * @param pc the instance to make transient. |
| */ |
| void makeTransient(Object pc); |
| |
| /** |
| * Make an array of instances transient, removing them from management by this <code> |
| * PersistenceManager</code>. |
| * |
| * <p>The instances lose their JDO identity and they are no longer associated with any <code> |
| * PersistenceManager</code>. The state of fields is preserved unchanged. |
| * |
| * @param pcs the instances to make transient. |
| */ |
| void makeTransientAll(Object... pcs); |
| |
| /** |
| * Make a <code>Collection</code> of instances transient, removing them from management by this |
| * <code>PersistenceManager</code>. |
| * |
| * <p>The instances lose their JDO identity and they are no longer associated with any <code> |
| * PersistenceManager</code>. The state of fields is preserved unchanged. |
| * |
| * @param pcs the instances to make transient. |
| */ |
| void makeTransientAll(Collection<?> pcs); |
| |
| /** |
| * Make an instance transient, removing it from management by this <code>PersistenceManager</code> |
| * . If the useFetchPlan parameter is false, this method behaves exactly as makeTransient(Object |
| * pc). |
| * |
| * <p>The affected instance(s) lose their JDO identity and are no longer associated with any |
| * <code>PersistenceManager</code>. The state of fields is unchanged. |
| * |
| * <p>If the useFetchPlan parameter is true, then the current FetchPlan is applied to the pc |
| * parameter, as if detachCopy(Object) had been called. After the graph of instances is loaded, |
| * the instances reachable via loaded fields is made transient. The state of fields in the |
| * affected instances is as specified by the FetchPlan. |
| * |
| * <p>Unlike detachCopy, the instances are not detached; there is no detachment information in the |
| * instances. |
| * |
| * <p>The instances to be made transient do not need to implement the javax.jdo.spi.Detachable |
| * interface. |
| * |
| * @param pc the root instance to make transient. |
| * @param useFetchPlan whether to use the current fetch plan to determine which fields to load and |
| * which instances to make transient |
| * @since 2.0 |
| */ |
| void makeTransient(Object pc, boolean useFetchPlan); |
| |
| /** |
| * Make instances transient, removing them from management by this <code>PersistenceManager</code> |
| * . If the useFetchPlan parameter is false, this method behaves exactly as |
| * makeTransientAll(Object[] pcs). |
| * |
| * <p>The affected instance(s) lose their JDO identity and are no longer associated with any |
| * <code>PersistenceManager</code>. The state of fields is unchanged. |
| * |
| * <p>If the useFetchPlan parameter is true, then the current FetchPlan is applied to the pcs |
| * parameters and the entire graph of instances reachable via loaded fields is made transient. The |
| * state of fields in the affected instances is as specified by the FetchPlan. |
| * |
| * <p>Unlike detachCopy, the instances are not detached; there is no detachment information in the |
| * instances. |
| * |
| * <p>The instances to be made transient do not need to implement the javax.jdo.spi.Detachable |
| * interface. |
| * |
| * @param pcs the root instances to make transient. |
| * @param useFetchPlan whether to use the current fetch plan to determine which fields to load and |
| * which instances to make transient |
| * @since 2.1 |
| */ |
| void makeTransientAll(boolean useFetchPlan, Object... pcs); |
| |
| /** |
| * Make instances transient, removing them from management by this <code>PersistenceManager</code> |
| * . If the useFetchPlan parameter is false, this method behaves exactly as |
| * makeTransientAll(Collection pcs). |
| * |
| * <p>The affected instance(s) lose their JDO identity and are no longer associated with any |
| * <code>PersistenceManager</code>. The state of fields is unchanged. |
| * |
| * <p>If the useFetchPlan parameter is true, then the current FetchPlan is applied to the pcs |
| * parameters and the entire graph of instances reachable via loaded fields is made transient. The |
| * state of fields in the affected instances is as specified by the FetchPlan. |
| * |
| * <p>Unlike detachCopy, the instances are not detached; there is no detachment information in the |
| * instances. |
| * |
| * <p>The instances to be made transient do not need to implement the javax.jdo.spi.Detachable |
| * interface. |
| * |
| * @param pcs the root instances to make transient. |
| * @param useFetchPlan whether to use the current fetch plan to determine which fields to load and |
| * which instances to make transient |
| * @since 2.0 |
| */ |
| void makeTransientAll(Collection<?> pcs, boolean useFetchPlan); |
| |
| /** |
| * Make an instance subject to transactional boundaries. |
| * |
| * <p>Transient instances normally do not observe transaction boundaries. This method makes |
| * transient instances sensitive to transaction completion. If an instance is modified in a |
| * transaction, and the transaction rolls back, the state of the instance is restored to the state |
| * before the first change in the transaction. |
| * |
| * <p>For persistent instances read in optimistic transactions, this method allows the application |
| * to make the state of the instance part of the transactional state. At transaction commit, the |
| * state of the instance in the cache is compared to the state of the instance in the data store. |
| * If they are not the same, then an exception is thrown. |
| * |
| * @param pc the instance to make transactional. |
| */ |
| void makeTransactional(Object pc); |
| |
| /** |
| * Make an array of instances subject to transactional boundaries. |
| * |
| * @param pcs the array of instances to make transactional. |
| * @see #makeTransactional(Object pc) |
| */ |
| void makeTransactionalAll(Object... pcs); |
| |
| /** |
| * Make a <code>Collection</code> of instances subject to transactional boundaries. |
| * |
| * @param pcs the <code>Collection</code> of instances to make transactional. |
| * @see #makeTransactional(Object pc) |
| */ |
| void makeTransactionalAll(Collection<?> pcs); |
| |
| /** |
| * Make an instance non-transactional after commit. |
| * |
| * <p>Normally, at transaction completion, instances are evicted from the cache. This method |
| * allows an application to identify an instance as not being evicted from the cache at |
| * transaction completion. Instead, the instance remains in the cache with nontransactional state. |
| * |
| * @param pc the instance to make nontransactional. |
| */ |
| void makeNontransactional(Object pc); |
| |
| /** |
| * Make an array of instances non-transactional after commit. |
| * |
| * @param pcs the array of instances to make nontransactional. |
| * @see #makeNontransactional(Object pc) |
| */ |
| void makeNontransactionalAll(Object... pcs); |
| |
| /** |
| * Make a <code>Collection</code> of instances non-transactional after commit. |
| * |
| * @param pcs the <code>Collection</code> of instances to make nontransactional. |
| * @see #makeNontransactional(Object pc) |
| */ |
| void makeNontransactionalAll(Collection<?> pcs); |
| |
| /** |
| * Retrieve field values of an instance from the store. This tells the <code>PersistenceManager |
| * </code> that the application intends to use the instance, and its field values must be |
| * retrieved. |
| * |
| * <p>The <code>PersistenceManager</code> might use policy information about the class to retrieve |
| * associated instances. |
| * |
| * @param pc the instance |
| */ |
| void retrieve(Object pc); |
| |
| /** |
| * Retrieve field values of an instance from the store. This tells the <code>PersistenceManager |
| * </code> that the application intends to use the instance, and its field values must be |
| * retrieved. |
| * |
| * <p>If the useFetchPlan parameter is false, this method behaves exactly as the corresponding |
| * method without the useFetchPlan parameter. If the useFetchPlan parameter is true, and the fetch |
| * plan has not been modified from its default setting, all fields in the current fetch plan are |
| * fetched, and other fields might be fetched lazily by the implementation. If the useFetchPlan |
| * parameter is true, and the fetch plan has been changed from its default setting, then the |
| * fields specified by the fetch plan are loaded, along with related instances specified by the |
| * fetch plan. |
| * |
| * @param pc the instance |
| * @param useFetchPlan whether to use the current fetch plan to determine which fields to load and |
| * which instances to retrieve. |
| * @since 2.0 |
| */ |
| void retrieve(Object pc, boolean useFetchPlan); |
| |
| /** |
| * Retrieve field values of instances from the store. This tells the <code>PersistenceManager |
| * </code> that the application intends to use the instances, and all field values must be |
| * retrieved. |
| * |
| * <p>The <code>PersistenceManager</code> might use policy information about the class to retrieve |
| * associated instances. |
| * |
| * @param pcs the instances |
| */ |
| void retrieveAll(Collection<?> pcs); |
| |
| /** |
| * Retrieve field values of instances from the store. This tells the <code>PersistenceManager |
| * </code> 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. |
| * |
| * <p>If the useFetchPlan parameter is false, this method behaves exactly as the corresponding |
| * method without the useFetchPlan parameter. If the useFetchPlan parameter is true, and the fetch |
| * plan has not been modified from its default setting, all fields in the current fetch plan are |
| * fetched, and other fields might be fetched lazily by the implementation. If the useFetchPlan |
| * parameter is true, and the fetch plan has been changed from its default setting, then the |
| * fields specified by the fetch plan are loaded, along with related instances specified by the |
| * fetch plan. |
| * |
| * @param pcs the instances |
| * @param useFetchPlan whether to use the current fetch plan to determine which fields to load and |
| * which instances to retrieve. |
| * @since 1.0.1 |
| */ |
| void retrieveAll(Collection<?> pcs, boolean useFetchPlan); |
| |
| /** |
| * Retrieve field values of instances from the store. This tells the <code>PersistenceManager |
| * </code> that the application intends to use the instances, and all field values must be |
| * retrieved. |
| * |
| * <p>The <code>PersistenceManager</code> might use policy information about the class to retrieve |
| * associated instances. |
| * |
| * @param pcs the instances |
| */ |
| void retrieveAll(Object... pcs); |
| |
| /** |
| * Retrieve field values of instances from the store. This tells the <code>PersistenceManager |
| * </code> 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. |
| * |
| * <p>If the useFetchPlan parameter is false, this method behaves exactly as the corresponding |
| * method without the useFetchPlan parameter. If the useFetchPlan parameter is true, and the fetch |
| * plan has not been modified from its default setting, all fields in the current fetch plan are |
| * fetched, and other fields might be fetched lazily by the implementation. If the useFetchPlan |
| * parameter is true, and the fetch plan has been changed from its default setting, then the |
| * fields specified by the fetch plan are loaded, along with related instances specified by the |
| * fetch plan. |
| * |
| * @param pcs the instances |
| * @param useFetchPlan whether to use the current fetch plan to determine which fields to load and |
| * which instances to retrieve. |
| * @since 2.1 |
| */ |
| void retrieveAll(boolean useFetchPlan, Object... pcs); |
| |
| /** |
| * The application can manage the <code>PersistenceManager</code> instances more easily by having |
| * an application object associated with each <code>PersistenceManager</code> instance. |
| * |
| * @param o the user instance to be remembered by the <code>PersistenceManager</code> |
| * @see #getUserObject |
| */ |
| void setUserObject(Object o); |
| |
| /** |
| * The application can manage the <code>PersistenceManager</code> instances more easily by having |
| * an application object associated with each <code>PersistenceManager</code> instance. |
| * |
| * @return the user object associated with this <code>PersistenceManager</code> |
| * @see #setUserObject |
| */ |
| Object getUserObject(); |
| |
| /** |
| * This method returns the <code>PersistenceManagerFactory</code> used to create this <code> |
| * PersistenceManager</code>. |
| * |
| * @return the <code>PersistenceManagerFactory</code> that created this <code>PersistenceManager |
| * </code> |
| */ |
| PersistenceManagerFactory getPersistenceManagerFactory(); |
| |
| /** |
| * Return the <code>Class</code> that implements the JDO Identity for the specified <code> |
| * PersistenceCapable</code> class. The application can use the returned <code>Class</code> to |
| * construct a JDO Identity instance for application identity <code>PersistenceCapable</code> |
| * classes. This JDO Identity instance can then be used to get an instance of the <code> |
| * PersistenceCapable</code> class for use in the application. |
| * |
| * <p>In order for the application to construct an instance of the ObjectId class it needs to know |
| * the class being used by the JDO implementation. |
| * |
| * @param cls the <code>PersistenceCapable Class</code> |
| * @return the <code>Class</code> of the ObjectId of the parameter |
| * @see #getObjectById |
| */ |
| Class<?> getObjectIdClass(Class<?> cls); |
| |
| /** |
| * Set the Multithreaded flag for this <code>PersistenceManager</code>. Applications that use |
| * multiple threads to invoke methods or access fields from instances managed by this <code> |
| * PersistenceManager</code> must set this flag to <code>true</code>. Instances managed by this |
| * <code>PersistenceManager</code> include persistent or transactional instances of <code> |
| * PersistenceCapable</code> classes, as well as helper instances such as <code>Query</code>, |
| * <code>Transaction</code>, or <code>Extent</code>. |
| * |
| * @param flag the Multithreaded setting. |
| */ |
| void setMultithreaded(boolean flag); |
| |
| /** |
| * Get the current Multithreaded flag for this <code>PersistenceManager</code>. |
| * |
| * @see #setMultithreaded |
| * @return the Multithreaded setting. |
| */ |
| boolean getMultithreaded(); |
| |
| /** |
| * Set the ignoreCache parameter for queries. |
| * |
| * <p>IgnoreCache set to <code>true</code> specifies that for all <code>Query</code> instances |
| * created by this <code>PersistenceManager</code>, the default is the cache should be ignored for |
| * queries. |
| * |
| * @param flag the ignoreCache setting. |
| */ |
| void setIgnoreCache(boolean flag); |
| |
| /** |
| * Get the ignoreCache setting for queries. |
| * |
| * <p>IgnoreCache set to <code>true</code> specifies that for all <code>Query</code> instances |
| * created by this <code>PersistenceManager</code>, the default is the cache should be ignored for |
| * queries. |
| * |
| * @return the ignoreCache setting. |
| */ |
| boolean getIgnoreCache(); |
| |
| /** |
| * Specify a timeout interval (milliseconds) for any datastore read operations associated with |
| * this persistence manager. To unset the explicit timeout, specify null. For no timeout, specify |
| * 0. Read operations include, for example, those associated with query, getObjectById, refresh, |
| * retrieve, and extent iteration operations. If the datastore granularity is larger than |
| * milliseconds, the timeout value will be rounded up to the nearest supported datastore value. If |
| * a read operation hasn't completed within this interval, the operation will throw a |
| * JDODatastoreException. If multiple datastore operations are required to complete the query, the |
| * timeout value applies to each of them individually. If the datastore and JDO implementation |
| * support timeouts, then javax.jdo.option.DatastoreTimeout is returned by |
| * PersistenceManagerFactory.supportedOptions(). If timeouts are not supported,this method will |
| * throw JDOUnsupportedOptionException. |
| * |
| * @since 3.0 |
| * @param interval the timeout interval (milliseconds) |
| */ |
| void setDatastoreReadTimeoutMillis(Integer interval); |
| |
| /** |
| * Get the effective timeout setting for datastore read operations associated with this |
| * persistence manager. If the timeout has not been set on this persistence manager explicitly, |
| * the default read timeout value from the persistence manager factory is returned. |
| * |
| * @see #setDatastoreReadTimeoutMillis(Integer) |
| * @see PersistenceManagerFactory#setDatastoreReadTimeoutMillis(Integer) |
| * @return the effective timeout setting (milliseconds). |
| * @since 3.0 |
| */ |
| Integer getDatastoreReadTimeoutMillis(); |
| |
| /** |
| * Specify a timeout interval (milliseconds) for any write operations associated with this |
| * persistence manager. To unset the explicit timeout, specify null. For no timeout, specify 0. |
| * Datastore write operations include, for example, operations associated with flush, commit, and |
| * delete by query. If the datastore granularity is larger than milliseconds, the timeout value |
| * will be rounded up to the nearest supported datastore value. If a write operation hasn't |
| * completed within this interval, methods will throw a JDODatastoreException. If multiple |
| * datastore operations are required to complete the method, the timeout value applies to each of |
| * them individually. If the datastore and JDO implementation support timeouts, then |
| * javax.jdo.option.DatastoreTimeout is returned by PersistenceManagerFactory.supportedOptions(). |
| * If timeouts are not supported,this method will throw JDOUnsupportedOptionException. |
| * |
| * @since 3.0 |
| * @param interval the timeout interval (milliseconds) |
| */ |
| void setDatastoreWriteTimeoutMillis(Integer interval); |
| |
| /** |
| * Get the effective timeout setting for write operations. If the timeout has not been set on this |
| * persistence manager explicitly, the default datastore write timeout value from the persistence |
| * manager factory is returned. |
| * |
| * @see #setDatastoreWriteTimeoutMillis(Integer) |
| * @see PersistenceManagerFactory#setDatastoreWriteTimeoutMillis(Integer) |
| * @return the effective timeout setting (milliseconds). |
| * @since 3.0 |
| */ |
| Integer getDatastoreWriteTimeoutMillis(); |
| |
| /** |
| * Gets the detachAllOnCommit setting. |
| * |
| * @see #setDetachAllOnCommit(boolean) |
| * @since 2.0 |
| * @return the detachAllOnCommit setting. |
| */ |
| boolean getDetachAllOnCommit(); |
| |
| /** |
| * Sets the detachAllOnCommit setting. |
| * |
| * <p>DetachAllOnCommit set to <code>false</code> specifies that the state of persistent instances |
| * in the cache after commit is defined by the <code>retainValues</code> flag. With this flag set |
| * to true, during beforeCompletion all cached instances are prepared for detachment according to |
| * the fetch plan in effect at commit. Loading fields and unloading fields required by the fetch |
| * plan is done after calling the user's <code>beforeCompletion</code> callback. During <code> |
| * afterCompletion</code>, before calling the user's <code>afterCompletion</code> callback, all |
| * detachable persistent instances in the cache transition to detached; non-detachable persistent |
| * instances transition to transient; and detachable instances can be serialized as detached |
| * instances. Transient transactional instances are unaffected by this flag. |
| * |
| * @param flag Flag for whether to detach all on commit |
| * @see #getDetachAllOnCommit() |
| * @since 2.0 |
| */ |
| void setDetachAllOnCommit(boolean flag); |
| |
| /** |
| * Gets the copyOnAttach setting. |
| * |
| * @see #setCopyOnAttach(boolean) |
| * @since 2.1 |
| * @return the copyOnAttach setting. |
| */ |
| boolean getCopyOnAttach(); |
| |
| /** |
| * Sets the copyOnAttach setting. |
| * |
| * <p>CopyOnAttach set to <code>true</code> specifies that during makePersistent, copies are made |
| * of detached parameter instances. With this flag set to <code>false</code>, detached parameter |
| * instances are attached directly and change their state from detached-clean to persistent-clean |
| * or from detached-dirty to persistent-dirty. |
| * |
| * @param flag Flag for whether to copy on attach |
| * @see #getCopyOnAttach() |
| * @since 2.1 |
| */ |
| void setCopyOnAttach(boolean flag); |
| |
| /** |
| * Detach the specified instance from the <code>PersistenceManager</code>. The flags for |
| * detachment (DETACH_LOAD_FIELDS and DETACH_UNLOAD_FIELDS) and the active fetch groups determine |
| * the scope of fetching for the graph of instances reachable from the pc parameter. The state of |
| * fields in the affected instances is as specified by the FetchPlan. |
| * |
| * @param pc the instance to detach |
| * @return the detached instance |
| * @see #detachCopyAll(Object[]) |
| * @since 2.0 |
| * @param <T> Type of the persistable object |
| */ |
| <T> T detachCopy(T pc); |
| |
| /** |
| * Detach the specified instances from the <code>PersistenceManager</code>. The flags for |
| * detachment (DETACH_LOAD_FIELDS and DETACH_UNLOAD_FIELDS) and the active fetch groups determine |
| * the scope of fetching for the graph of instances reachable from the pcs parameter. The state of |
| * fields in the affected instances is as specified by the FetchPlan. |
| * |
| * @param pcs the instances to detach |
| * @return the detached instances |
| * @see #detachCopyAll(Object[]) |
| * @since 2.0 |
| * @param <T> Type of the persistable objects |
| */ |
| <T> Collection<T> detachCopyAll(Collection<T> pcs); |
| |
| /** |
| * Detach the specified instances from the <code>PersistenceManager</code>. The flags for |
| * detachment (DETACH_LOAD_FIELDS and DETACH_UNLOAD_FIELDS) and the active fetch groups determine |
| * the scope of fetching for the graph of instances reachable from the pcs parameter. The state of |
| * fields in the affected instances is as specified by the FetchPlan. The objects returned can be |
| * manipulated and re-attached with {@link #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 |
| * {@link FetchPlan} will be traversed. Thus, to detach a graph of objects, relations to other |
| * persistent instances must either be in the <code>default-fetch-group</code>, or in the current |
| * custom {@link FetchPlan}. |
| * |
| * @param pcs the instances to detach |
| * @return the detached instances |
| * @throws JDOUserException if any of the instances to be detached do not implement the |
| * javax.jdo.spi.Detachable interface. |
| * @see #makePersistentAll(Object[]) |
| * @see #getFetchPlan |
| * @since 2.0 |
| * @param <T> Type of the persistable object |
| */ |
| @SuppressWarnings({"unchecked", "varargs"}) |
| <T> T[] detachCopyAll(T... pcs); |
| |
| /** |
| * Put the specified key-value pair into the map of user objects. |
| * |
| * @since 2.0 |
| * @param key Key to store the user object under |
| * @param val User object to store |
| * @return The previous object under this key |
| */ |
| Object putUserObject(Object key, Object val); |
| |
| /** |
| * Get the value for the specified key from the map of user objects. |
| * |
| * @param key the key of the object to be returned |
| * @return the object |
| * @since 2.0 |
| */ |
| Object getUserObject(Object key); |
| |
| /** |
| * Remove the specified key and its value from the map of user objects. |
| * |
| * @param key the key of the object to be removed |
| * @return The user object that was removed |
| * @since 2.0 |
| */ |
| Object removeUserObject(Object key); |
| |
| /** |
| * Flushes all dirty, new, and deleted instances to the data store. It has no effect if a |
| * transaction is not active. |
| * |
| * <p>If a datastore transaction is active, this method synchronizes the cache with the datastore |
| * and reports any exceptions. |
| * |
| * <p>If an optimistic transaction is active, this method obtains a datastore connection, |
| * synchronizes the cache with the datastore using this connection and reports any exceptions. The |
| * connection obtained by this method is held until the end of the transaction. |
| * |
| * <p>If exceptions occur during flush, the implementation will set the current transaction's |
| * <code>RollbackOnly</code> flag (see {@link Transaction#setRollbackOnly}). |
| * |
| * @since 2.0 |
| */ |
| void flush(); |
| |
| /** |
| * Validates the <code>PersistenceManager</code> cache with the datastore. This method has no |
| * effect if a transaction is not active. |
| * |
| * <p>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 {@link #flush} |
| * were called, but it is not required to do so. |
| * |
| * <p>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 {@link JDOOptimisticVerificationException} is thrown. This |
| * exception contains a nested {@link 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. |
| * |
| * @since 2.0 |
| */ |
| void checkConsistency(); |
| |
| /** |
| * Returns the <code>FetchPlan</code> used by this <code>PersistenceManager</code>. |
| * |
| * @return the FetchPlan |
| * @since 2.0 |
| */ |
| FetchPlan getFetchPlan(); |
| |
| /** |
| * Creates an instance of a persistence-capable interface, or of a concrete or abstract class. The |
| * returned instance is transient. |
| * |
| * @param pcClass Must be a persistence-capable interface, or a concrete or abstract class that is |
| * declared in the metadata. |
| * @return the created instance |
| * @since 2.0 |
| * @param <T> Type of the persistable object |
| */ |
| <T> T newInstance(Class<T> pcClass); |
| |
| /** |
| * Returns the sequence identified by <code>name</code>. |
| * |
| * @param name the name of the Sequence |
| * @return the Sequence |
| * @since 2.0 |
| */ |
| Sequence getSequence(String name); |
| |
| /** |
| * If this method is called while a datastore transaction is active, the object returned will be |
| * enlisted in the current transaction. If called in an optimistic transaction or outside an |
| * active transaction, the object returned will not be enlisted in any transaction. |
| * |
| * @return the JDOConnection instance |
| * @since 2.0 |
| */ |
| JDOConnection getDataStoreConnection(); |
| |
| /** |
| * Adds the listener instance to the list of lifecycle event listeners. The <code>classes</code> |
| * parameter identifies all of the classes of interest. If the <code>classes</code> parameter is |
| * specified as <code>null</code>, events for all persistent classes and interfaces will be sent |
| * to <code>listenerInstance</code>. |
| * |
| * <p>The listenerInstance will be called for each event for which it implements the corresponding |
| * listenerInstance interface. |
| * |
| * @param listener the lifecycle listener |
| * @param classes the classes of interest to the listener |
| * @since 2.0 |
| */ |
| void addInstanceLifecycleListener(InstanceLifecycleListener listener, Class<?>... classes); |
| |
| /** |
| * Removes the listener instance from the list of lifecycle event listeners. |
| * |
| * @param listener the listener instance to be removed |
| * @since 2.0 |
| */ |
| void removeInstanceLifecycleListener(InstanceLifecycleListener listener); |
| |
| /** |
| * Get the Date as seen by the server. Clients using this method can order their operations |
| * according to a single time source. Implementations use the setting of the server time zone to |
| * prepare a Date instance that represents UTC time on the server. |
| * |
| * @return a Date instance corresponding to the UTC Date as seen by the server |
| * @since 2.1 |
| */ |
| Date getServerDate(); |
| |
| /** |
| * Get the objects managed by this persistence manager. |
| * |
| * @return the objects |
| * @since 2.1 |
| */ |
| Set getManagedObjects(); |
| |
| /** |
| * Get the objects managed by this persistence manager having the specified object states. |
| * |
| * @param states The states of objects that we are interested in |
| * @return the objects |
| * @since 2.1 |
| */ |
| Set getManagedObjects(EnumSet<ObjectState> states); |
| |
| /** |
| * Get the objects managed by this persistence manager being instances of the specified classes. |
| * |
| * @param classes The classes of objects that we are interested in |
| * @return the objects |
| * @since 2.1 |
| */ |
| Set getManagedObjects(Class<?>... classes); |
| |
| /** |
| * Get the objects managed by this persistence manager having the specified object states and |
| * being instances of the specified classes. |
| * |
| * @param states The states of objects that we are interested in |
| * @param classes The classes of objects that we are interested in |
| * @return the objects |
| * @since 2.1 |
| */ |
| Set getManagedObjects(EnumSet<ObjectState> states, Class<?>... classes); |
| |
| /** |
| * Get a modifiable <code>FetchGroup</code> for the Class and name. If a modifiable <code> |
| * FetchGroup</code> already exists in the <code>PersistenceManager</code> scope, return it. If |
| * not, create and populate a new <code>FetchGroup</code> from the existing definition in the |
| * {@link PersistenceManager} or {@link PersistenceManagerFactory}. If the definition for the |
| * <code>FetchGroup</code> is not in scope in either the <code>PersistenceManager</code> or <code> |
| * PersistenceManagerFactory</code>, create it with no members. The <code>FetchGroup</code> |
| * immediately becomes active and in scope of the PersistenceManager, and hides the corresponding |
| * fetch group in the PersistenceManagerFactory. |
| * |
| * @param cls the class or interface for the <code>FetchGroup</code> |
| * @param name the name of the fetch group |
| * @return the FetchGroup |
| * @throws JDOUserException if the class is not a persistence-capable class or interface |
| * @since 2.2 |
| */ |
| FetchGroup getFetchGroup(Class<?> cls, String name); |
| |
| /** |
| * 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. |
| * |
| * @param propertyName name of property |
| * @param value The value |
| * @throws JDOUserException if the value is not supported for the property |
| * @since 3.1 |
| */ |
| public void setProperty(String propertyName, Object value); |
| |
| /** |
| * 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. |
| * |
| * @return map of properties in effect |
| * @since 3.1 |
| */ |
| public Map<String, Object> getProperties(); |
| |
| /** |
| * 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. |
| * |
| * @return property names Names of the properties accepted |
| * @since 3.1 |
| */ |
| public Set<String> getSupportedProperties(); |
| } |