Each PersistenceManager
is responsible for
managing the JDO identities of the persistent objects in its cache.
The following methods allow you to interact with the management
of JDO identities.
public Class getObjectIdClass (Class pcClass);
Returns the JDO identity class used for the given persistence-capable
class. If the given class does not use application identity, returns
null
.
public Object newObjectIdInstance (Class pcClass, Object pkOrString);
This method is used to re-create JDO identity objects from the string
returned by their toString
method, or, in the case of single field identity, from the primary key
value. Given a persistence-capable class and a JDO
identity string or primary key object, the method constructs a JDO
identity object. Using the getObjectById
method described below, this identity object can then be
employed to obtain the corresponding persistent instance.
Note | |
---|---|
Kodo also allows you to pass the primary key value of datastore identity instance into this method to create a datastore identity object. |
public Object getObjectId (Object pc);
Returns the JDO identity object for a persistent instance managed by
this PersistenceManager
. This method is similar
to JDOHelper.getObjectId
.
public Object getObjectById (Object oid, boolean validate); public Object getObjectById (Object oid);
These methods returns the persistent instance corresponding to the given JDO identity object. If the instance is already cached, the cached version is returned. Otherwise, a new instance is constructed, and may or may not be loaded with data from the datastore.
If the validate
parameter of the method
is true
, the JDO implementation will throw a
JDOObjectNotFoundException
if the datastore record for the given JDO identity does not exist.
Otherwise, the implementation may return a cached object without
validating it. The implementation might return a
hollow instance even when no cached object exists, and an exception
will not be thrown until you attempt to access one of the object's
persistent fields.
Invoking the method version without a validate
parameter is equivalent to using a validate
parameter of true
.
public Object[] getObjectsById (Object[] oids, boolean validate); public Object[] getObjectsById (Object[] oids); public Collection getObjectsById (Collection oids, boolean validate); public Collection getObjectsById (Collection oids);
These method are exactly equivalent to the singular
getObjectById
methods, but acts on an array or collection
of identity objects. They may be more efficient than calling the
singular method for each identity object.
public Object getObjectById (Class pcClass, Object pkOrString);
This is a convenience method equivalent to using
newObjectIdInstance
to construct an identity object with
the given Class
and
Object
, then calling getObjectById
with that identity object and a validate
parameter of true
. The code below
demonstrates this equivalence.
PersistenceManager pm = ...; Object pkValue = ...; Object oid = pm.newObjectIdInstance (Magazine.class, pkValue); Magazine mag1 = (Magazine) pm.getObjectById (oid, true); Magazine mag2 = (Magazine) pm.getObjectById (Magazine.class, pkValue); assertTrue (mag1 == mag2);