|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
A class that can be managed by a JDO implementation.
Every class whose instances can be managed by a JDO PersistenceManager must implement the PersistenceCapable interface.
This interface defines methods that allow the implementation to manage the instances. It also defines methods that allow a JDO aware application to examine the runtime state of instances. For example, an application can discover whether the instance is persistent, transactional, dirty, new, or deleted; and to get its associated PersistenceManager if it has one.
In the Reference Implementation, the JDO Enhancer modifies the class to implement PersistenceCapable prior to loading the class into the runtime environment. The Reference Enhancer also adds code to implement the methods defined by PersistenceCapable.
The extra methods in the PersistenceCapable interface might be generated by pre-processing a .java file, or might be generated from a tool directly. The exact technique for generating the extra methods is not specified by JDO.
The PersistenceCapable interface is designed to avoid name conflicts in the scope of user-defined classes. All of its declared method names are prefixed with 'jdo'.
Nested Class Summary | |
static interface |
PersistenceCapable.ObjectIdFieldManager
This interface is used to copy fields to the Object id instance. |
Field Summary | |
static byte |
CHECK_READ_WRITE
If jdoFieldFlags for a field is set to CHECK_READ_WRITE, then the field has been enhanced to call the jdoStateManager on read if the jdoFlags setting is not READ_OK or READ_WRITE_OK; and to call the jdoStateManager on write if the jdoFlags setting is not READ_WRITE_OK. |
static byte |
CHECK_WRITE
If jdoFieldFlags for a field is set to CHECK_WRITE, then the field has been enhanced to always allow read, but to call the jdoStateManager if the jdoFlags setting is not READ_OK or READ_WRITE_OK. |
static byte |
LOAD_REQUIRED
If jdoFlags is set to LOAD_REQUIRED, then the fields in the default fetch group cannot be accessed for read or write without notifying the StateManager. |
static byte |
MEDIATE_READ_WRITE
If jdoFieldFlags for a field is set to MEDIATE_READ_WRITE, then the field has been enhanced to always call the jdoStateManager on read and write. |
static byte |
MEDIATE_WRITE
If jdoFieldFlags for a field is set to MEDIATE_WRITE, then the field has been enhanced to always allow read, but to call the jdoStateManager on all writes. |
static byte |
READ_OK
If jdoFlags is set to READ_OK, then the fields in the default fetch group can be accessed for read without notifying the StateManager. |
static byte |
READ_WRITE_OK
If jdoFlags is set to READ_WRITE_OK, then the fields in the default fetch group can be accessed for read or write without notifying the StateManager. |
Method Summary | |
void |
jdoCopyFields(java.lang.Object other,
int[] fieldNumbers)
Copy field values from another instance of the same class to this instance. |
void |
jdoCopyKeyFieldsToObjectId(PersistenceCapable.ObjectIdFieldManager fm,
java.lang.Object oid)
Copy fields from an outside source to the key fields in the ObjectId. |
void |
jdoCopyKeyFieldsToObjectId(PersistenceCapable pc,
java.lang.Object oid)
Copy fields from the PersistenceCapable instance to the Object Id instance. |
java.lang.Object |
jdoGetObjectId()
Return a copy of the JDO identity associated with this instance. |
PersistenceManager |
jdoGetPersistenceManager()
Return the associated PersistenceManager if there is one. |
java.lang.Object |
jdoGetTransactionalObjectId()
Return a copy of the JDO identity associated with this instance. |
boolean |
jdoIsDeleted()
Tests whether this object has been deleted. |
boolean |
jdoIsDirty()
Tests whether this object is dirty. |
boolean |
jdoIsNew()
Tests whether this object has been newly made persistent. |
boolean |
jdoIsPersistent()
Tests whether this object is persistent. |
boolean |
jdoIsTransactional()
Tests whether this object is transactional. |
void |
jdoMakeDirty(java.lang.String fieldName)
Explicitly mark this instance and this field dirty. |
PersistenceCapable |
jdoNewInstance(StateManager sm)
Return a new instance of this class, with the jdoStateManager set to the parameter, and jdoFlags set to LOAD_REQUIRED. |
PersistenceCapable |
jdoNewInstance(StateManager sm,
java.lang.Object oid)
Return a new instance of this class, with the jdoStateManager set to the parameter, key fields initialized to the values in the oid, and jdoFlags set to LOAD_REQUIRED. |
java.lang.Object |
jdoNewObjectIdInstance()
Create a new instance of the ObjectId class for this PersistenceCapable class. |
void |
jdoProvideField(int fieldNumber)
The owning StateManager uses this method to ask the instance to provide the value of the single field identified by fieldNumber. |
void |
jdoProvideFields(int[] fieldNumbers)
The owning StateManager uses this method to ask the instance to provide the values of the multiple fields identified by fieldNumbers. |
void |
jdoReplaceField(int fieldNumber)
The owning StateManager uses this method to ask the instance to replace the value of the single field identified by number. |
void |
jdoReplaceFields(int[] fieldNumbers)
The owning StateManager uses this method to ask the instance to replace the values of the multiple fields identified by number. |
void |
jdoReplaceFlags()
The owning StateManager uses this method to ask the instance to replace the value of the flags by calling back the StateManager replacingFlags method. |
void |
jdoReplaceStateManager(StateManager sm)
This method sets the StateManager instance that manages the state of this instance. |
Field Detail |
public static final byte READ_WRITE_OK
public static final byte LOAD_REQUIRED
public static final byte READ_OK
public static final byte CHECK_WRITE
public static final byte MEDIATE_WRITE
public static final byte CHECK_READ_WRITE
public static final byte MEDIATE_READ_WRITE
Method Detail |
public PersistenceManager jdoGetPersistenceManager()
Transient non-transactional instances return null.
This method always delegates to the StateManager if it is non-null.
public void jdoReplaceStateManager(StateManager sm) throws java.lang.IllegalAccessException
sm
- The StateManager which will own this instance, or null
to reset the instance to transient state
java.lang.IllegalAccessException
- if the caller does not have JDOPermissionJDOPermission
public void jdoProvideField(int fieldNumber)
fieldNumber
- the field whose value is to be provided by
a callback to the StateManager's
providedXXXField methodpublic void jdoProvideFields(int[] fieldNumbers)
fieldNumbers
- the fields whose values are to be provided by
multiple callbacks to the StateManager's
providedXXXField methodpublic void jdoReplaceField(int fieldNumber)
fieldNumber
- the field whose value is to be replaced by
a callback to the StateManager's
replacingXXXField methodpublic void jdoReplaceFields(int[] fieldNumbers)
fieldNumbers
- the fields whose values are to be replaced by
multiple callbacks to the StateManager's
replacingXXXField methodpublic void jdoReplaceFlags()
public void jdoCopyFields(java.lang.Object other, int[] fieldNumbers)
This method will throw an exception if the other instance is not managed by the same StateManager as this instance.
other
- the PC instance from which field values are to be copiedfieldNumbers
- the field numbers to be copied into this instancepublic void jdoMakeDirty(java.lang.String fieldName)
The field name should be the fully qualified name, including package name and class name of the class declaring the field. This allows unambiguous identification of the field to be marked dirty. If multiple classes declare the same field, and if the package and class name are not provided by the parameter in this API, then the field marked dirty is the field declared by the most derived class.
Transient instances ignore this method.
fieldName
- the name of the field to be marked dirty.public java.lang.Object jdoGetObjectId()
Persistent instances of PersistenceCapable classes have a JDO identity managed by the PersistenceManager. This method returns a copy of the ObjectId that represents the JDO identity.
Transient instances return null.
The ObjectId may be serialized and later restored, and used with a PersistenceManager from the same JDO implementation to locate a persistent instance with the same data store identity.
If the JDO identity is managed by the application, then the ObjectId may be used with a PersistenceManager from any JDO implementation that supports the PersistenceCapable class.
If the JDO identity is not managed by the application or the data store, then the ObjectId returned is only valid within the current transaction.
If the JDO identity is being changed in the transaction, this method returns the object id as of the beginning of the current transaction.
PersistenceManager.getObjectId(Object pc)
,
PersistenceManager.getObjectById(Object oid, boolean validate)
public java.lang.Object jdoGetTransactionalObjectId()
If the JDO identity is being changed in the transaction, this method returns the current object id as modified in the current transaction.
jdoGetObjectId()
,
PersistenceManager.getObjectId(Object pc)
,
PersistenceManager.getObjectById(Object oid, boolean validate)
public boolean jdoIsDirty()
Transient instances return false.
JDOHelper.isDirty(Object pc)
,
JDOHelper.makeDirty(Object pc, String fieldName)
,
jdoMakeDirty(String fieldName)
public boolean jdoIsTransactional()
Transient instances return false.
JDOHelper.isTransactional(Object pc)
,
PersistenceManager.makeTransactional(Object pc)
public boolean jdoIsPersistent()
JDOHelper.isPersistent(Object pc)
,
PersistenceManager.makePersistent(Object pc)
public boolean jdoIsNew()
Transient instances return false.
JDOHelper.isNew(Object pc)
,
PersistenceManager.makePersistent(Object pc)
public boolean jdoIsDeleted()
Transient instances return false.
JDOHelper.isDeleted(Object pc)
,
PersistenceManager.deletePersistent(Object pc)
public PersistenceCapable jdoNewInstance(StateManager sm)
This method is used as a performance optimization as an alternative to using reflection to construct a new instance. It is used by the JDOImplHelper class method newInstance.
sm
- the StateManager that will own the new instance.
JDOImplHelper.newInstance(Class pcClass, StateManager sm)
public PersistenceCapable jdoNewInstance(StateManager sm, java.lang.Object oid)
This method is used as a performance optimization as an alternative to using reflection to construct a new instance of a class that uses application identity. It is used by the JDOImplHelper class method newInstance.
sm
- the StateManager that will own the new instance.oid
- an instance of the object id class (application identity).
JDOImplHelper.newInstance(Class pcClass, StateManager sm)
public java.lang.Object jdoNewObjectIdInstance()
public void jdoCopyKeyFieldsToObjectId(PersistenceCapable pc, java.lang.Object oid)
pc
- the PersistenceCapable source of the key fieldsoid
- the ObjectId target of the key fieldspublic void jdoCopyKeyFieldsToObjectId(PersistenceCapable.ObjectIdFieldManager fm, java.lang.Object oid)
void copyKeyFieldsToObjectId
(PersistenceCapable oid, ObjectIdFieldManager fm) {
oid.id = fm.fetchIntField (0);
oid.name = fm.fetchStringField (1);
oid.salary = fm.fetchObjectField (2);
}
The implementation is responsible for implementing the ObjectIdFieldManager to produce the values for the key fields.
oid
- the ObjectId target of the copy.fm
- the field manager that supplies the field values.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |