Top Description Methods
org.eclipse.persistence.descriptors

public Interface SerializedObjectPolicy

extends Cloneable, Serializable
Known Direct Implementers
org.eclipse.persistence.internal.descriptors.AbstractSerializedObjectPolicy
Imports
java.io.Serializable, java.util.List, org.eclipse.persistence.internal.helper.DatabaseField, org.eclipse.persistence.internal.sessions.AbstractRecord, .AbstractSession, org.eclipse.persistence.queries.ObjectLevelReadQuery

SerializedObjectPolicy (SOP) could be set on a non-aggregate descriptor. If SerializedObjectPolicy is specified Eclipselink writes out the whole entity object with its privately owned (and nested privately owned) entities and element collections into an additional (likely BLOB) field in the database. If SerializedObjectPolicy is set on an entity then SerializedObjectPolicies with the same field are set on all inheriting entities. The goal is to make reads from the database faster. The draw back is slower writes into the database. So SerializedObjectPolicy may make sense for read-only / read-mostly application for Entity, which always loads all its dependent entities and / or ElementCollections. To use SerializedObjectPolicy, ObjectLevelReadQuery should set a boolean flag
Author
ailitche
Since
EclipseLink 2.5.1
See Also
In case the serialized object column contains null or obsolete version of the object the query using SerializedObjectPolicy would either throw exception or - if all other fields have been read, too - would build the object using these fields (exactly as in case SerializedObjectPolicy is not used). Note that currently no default implementation of SerializedObjectPolicy is available and this class should be provided by the user., org.eclipse.persistence.annotations.SerializedObject

Method Summary

Modifier and TypeMethod and Description
public SerializedObjectPolicy
public List<DatabaseField>
getAllSelectionFields()

Lists the database fields that should be read by the query using the policy, in case all inherited objects are read using outer joining.

public ClassDescriptor
getDescriptor()

get owning descriptor

public DatabaseField
getField()

get the field that stores sopObject in the database (sopField)

public Object
getObjectFromRow(AbstractRecord databaseRow, AbstractSession session, ObjectLevelReadQuery query)

Deserialize the object from the value corresponding to the policy field, nullify that value, set the object into the row using setSopObject, also return it.

public List<DatabaseField>
getSelectionFields()

Lists the database fields that should be read by the query using the policy.

public void
initialize(AbstractSession session)

initialize the policy

public void
initializeField(AbstractSession session)

unless the field is already initialized by parent descriptor, add the field to the owning descriptor and set field's type

public SerializedObjectPolicy
instantiateChild()

instantiate policy for child descriptor

public void
postInitialize(AbstractSession session)

postinitialize the policy: determine which mappings are included, which fields should be selected

public void
putObjectIntoRow(AbstractRecord databaseRow, Object object, AbstractSession session)

Serialize the object and put the result into the row as a value corresponding to the policy field

public void
setDescriptor(ClassDescriptor descriptor)

set owning descriptor

public void
setField(DatabaseField field)

set the field that stores sopObject in the database (sopField)

Method Detail

cloneback to summary
public SerializedObjectPolicy clone()
getAllSelectionFieldsback to summary
public List<DatabaseField> getAllSelectionFields()

Lists the database fields that should be read by the query using the policy, in case all inherited objects are read using outer joining. To allow recovery in case of null or invalid sopObject, then this method should return all the fields define by descriptor (descriptor.getAllFields()).

getDescriptorback to summary
public ClassDescriptor getDescriptor()

get owning descriptor

getFieldback to summary
public DatabaseField getField()

get the field that stores sopObject in the database (sopField)

getObjectFromRowback to summary
public Object getObjectFromRow(AbstractRecord databaseRow, AbstractSession session, ObjectLevelReadQuery query)

Deserialize the object from the value corresponding to the policy field, nullify that value, set the object into the row using setSopObject, also return it. If the object is null or invalid, behaviour depend on whether the policy allows the query to recover or not (see comments to getFieldsToSelect and getAllFieldsToSelect methods): if recovery is possible then the method should return null, otherwise throw QueryException (query is a parameter of this method only because it's required by QueryException).

getSelectionFieldsback to summary
public List<DatabaseField> getSelectionFields()

Lists the database fields that should be read by the query using the policy. To allow recovery in case of null or invalid sopObject, then this method should return all the fields define by descriptor (descriptor.getFields()).

initializeback to summary
public void initialize(AbstractSession session)

initialize the policy

initializeFieldback to summary
public void initializeField(AbstractSession session)

unless the field is already initialized by parent descriptor, add the field to the owning descriptor and set field's type

instantiateChildback to summary
public SerializedObjectPolicy instantiateChild()

instantiate policy for child descriptor

postInitializeback to summary
public void postInitialize(AbstractSession session)

postinitialize the policy: determine which mappings are included, which fields should be selected

putObjectIntoRowback to summary
public void putObjectIntoRow(AbstractRecord databaseRow, Object object, AbstractSession session)

Serialize the object and put the result into the row as a value corresponding to the policy field

setDescriptorback to summary
public void setDescriptor(ClassDescriptor descriptor)

set owning descriptor

setFieldback to summary
public void setField(DatabaseField field)

set the field that stores sopObject in the database (sopField)