blob: 8d7b93458061463099904a7591da3419b384aac0 [file] [log] [blame]
/*
* Copyright 2005 The Apache Software Foundation.
*
* Licensed 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
*
* http://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
* limitations under the License.
*/
/*
* InstanceCallbacks.java
*
*/
package javax.jdo;
/** A <code>PersistenceCapable</code> class that provides callback methods for life
* cycle events implements this interface.
*
* <P>For JDO 2.0, <code>InstanceCallbacks</code> has been refactored to extend
* four other interfaces, without changing any of the methods or semantics.
* This allows fine-grained control over callbacks, for
* example to allow a class to implement the load callback without
* implementing any of the other callbacks. For backward compatibility
* with JDO 1.0, the <code>InstanceCallbacks</code> interface is preserved.
*
* <P>Classes which include non-persistent fields whose values depend
* on the values of persistent fields require callbacks on specific
* JDO instance life cycle events in order to correctly populate the
* values in these fields.
*
* <P>The callbacks might also be used if the persistent instances
* need to be put into the runtime infrastructure of the application.
* For example, a persistent instance might notify other instances
* on changes to state. The persistent instance might be in a list of
* managed instances. When the persistent instance is made hollow,
* it can no longer generate change events, and the persistent
* instance should be removed from the list of managed instances.
*
* <P>To implement this, the application programmer would implement
* <code>jdoPostLoad</code> to put itself into the list of managed
* instances, and implement <code>jdoPreClear</code> to remove itself from
* the list. With JDO 1.0, the domain class would be declared to implement
* <code>InstanceCallbacks</code>. With JDO 2.0, the domain class
* would be declared to implement
* <code>javax.jdo.listener.LoadCallback</code> and
* <code>javax.jdo.listener.ClearCallback</code>.
*
* <P>Note that JDO does not manage the state of non-persistent
* fields, and when a JDO instance transitions to hollow, JDO clears
* the persistent fields. It is the programmer's responsibility to
* clear non-persistent fields so that garbage collection of
* referred instances can occur.
*
* @since 1.0
* @version 2.0
*/
public interface InstanceCallbacks
extends javax.jdo.listener.ClearCallback,
javax.jdo.listener.DeleteCallback,
javax.jdo.listener.LoadCallback,
javax.jdo.listener.StoreCallback {
}