public class ImportContext extends Object
Plain objects (POJO's) can be imported into a
JTransaction to the extent that the POJO class and
the corresponding Permazen model class share the same properties. The simplest example of this is when
the POJO class is also the Permazen model class (implying a non-abstract class; see also
@PermazenType.autogenNonAbstract()). Also possible are POJO
classes and model classes that implement common Java interfaces.
ObjId for the corresponding imported Permazen object is determined by the configured
storageIdMapper returns null, the POJO is not imported, and nulls replace any copied references to it; otherwise,
the returned object must exist in the transaction. If
storageIdMapper is itself null, the default behavior is
to create a new Permazen object using
JTransaction.create(Class), providing the POJO's class as the model class.
Instances ensure that an already-imported POJO will be recognized and not imported twice.
Note this determination is based on object identity, not
storageIdMapper is invoked at most once for any POJO.
Once the target object for a POJO has been identified, common properties are copied, overwriting any previous values. POJO properties that are not Permzen properties are ignored; conversely, properties that exist in the Permazen model object type but are missing in the POJO are left unmodified.
Permazen reference fields are automatically imported as POJO's, recursively. In other words, the entire transitive closure of POJO's reachable from an imported object is imported. Cycles in the graph of references are handled properly.
Counterfields import from any
|Constructor and Description|
|Modifier and Type||Method and Description|
Get the mapping from already imported POJO's to their corresponding database objects.
Get the destination transaction for imported objects.
Import a plain Java object (POJO), along with all other objects reachable from it via copied reference fields.
public ImportContext(JTransaction jtx)
Uses a default
storageIdMapper that creates new instances for imported objects via
JTransaction.create(Class), using the Permazen model type found by
Permazen.findJClass(Class) when given the POJO's class.
jtx- the transaction in which to import objects
public ImportContext(JTransaction jtx, Function<Object,ObjId> storageIdMapper)
public JTransaction getTransaction()
obj has already been imported, the previously assigned
JObject is returned.
obj- object to import; must not be null
storageIdMapperreturned null for
storageIdMapperreturns the object ID of a non-existent object
storageIdMapperreturns an object ID that does not corresponding to any Permazen model class
Copyright © 2020. All rights reserved.