GenericPersistentObject (cayenne-doc: Cayenne Documentation 5.0-M2 API)
Description: declaration: package: org.apache.cayenne, class: GenericPersistentObject

# Class GenericPersistentObject

java.lang.Object
org.apache.cayenne.PersistentObject
org.apache.cayenne.GenericPersistentObject

All Implemented Interfaces:
  `Serializable, Persistent, Validating`

public class GenericPersistentObject extends PersistentObject
Implementation of `Persistent` that uses `Map` to store object fields.

This implementation was pre 4.1 default.

Since 4.1 it is recommended to use `PersistentObject` as superclass (and it is actually default now), as it has better performance and lower memory consumption (much lower for small objects).

You may need to use this class only if you have some generic attributes created at runtime (also consider `HybridPersistentObject` in this case) or if any compatibility issues arise.

Since:
  5.0, renamed from CayenneDataObject
See Also:
  - `PersistentObject`
  - `HybridPersistentObject`
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Map<String,Object>`
  `values`

  ### Fields inherited from class PersistentObject

  `objectContext, objectId, persistenceState, snapshotVersion`
  Modifier and Type
  Field
  Description
  `protected ObjectContext`
  `objectContext`
  `protected ObjectId`
  `objectId`
  `protected int`
  `persistenceState`
  `protected long`
  `snapshotVersion`

  ### Fields inherited from interface Persistent

  `DEFAULT_VERSION`
  Modifier and Type
  Field
  Description
  `static final long`
  `DEFAULT_VERSION`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `GenericPersistentObject()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `appendProperties(StringBuffer buffer)`
  `Object`
  `readPropertyDirectly(String propName)`
  Returns mapped property value as currently stored in the Persistent object.
  `protected void`
  `readState(ObjectInputStream in)`
  `void`
  `setPersistenceState(int persistenceState)`
  `void`
  `writePropertyDirectly(String propName, Object val)`
  Modifies a value of a named property without altering the object state in any way, and without triggering any database operations.
  `protected void`
  `writeState(ObjectOutputStream out)`

  ### Methods inherited from class PersistentObject

  `addToManyTarget, beforePropertyRead, beforePropertyWrite, getMapKey, getObjectContext, getObjectId, getPersistenceState, getSnapshotVersion, readNestedProperty, readNestedProperty, readProperty, readSerialized, removeToManyTarget, setObjectContext, setObjectId, setReverseRelationship, setSnapshotVersion, setToManyTarget, setToOneTarget, toString, toStringBuffer, unsetReverseRelationship, validateForDelete, validateForInsert, validateForSave, validateForUpdate, willConnect, writeProperty, writeSerialized`
  Modifier and Type
  Method
  Description
  `void`
  `addToManyTarget(String relName, Persistent value, boolean setReverse)`
  Adds an object to a to-many relationship.
  `protected void`
  `beforePropertyRead(String propName)`
  `protected void`
  `beforePropertyWrite(String propName, Object oldValue, Object newValue)`
  `protected Object`
  `getMapKey(String relationshipName, Object value)`
  Returns a map key for a given to-many map relationship and a target object.
  `ObjectContext`
  `getObjectContext()`
  `ObjectId`
  `getObjectId()`
  `int`
  `getPersistenceState()`
  `long`
  `getSnapshotVersion()`
  Returns a version of a DataRow snapshot that was used to create this object.
  `Object`
  `readNestedProperty(String path)`
  Returns a value of the property identified by a property path.
  `Object`
  `readNestedProperty(CayennePath path)`
  Returns a value of the property identified by a property path.
  `Object`
  `readProperty(String propertyName)`
  Returns a value of the property identified by propName.
  `protected void`
  `readSerialized(ObjectInputStream in)`
  `void`
  `removeToManyTarget(String relName, Persistent value, boolean setReverse)`
  Removes an object from a to-many relationship.
  `void`
  `setObjectContext(ObjectContext objectContext)`
  `void`
  `setObjectId(ObjectId objectId)`
  `protected void`
  `setReverseRelationship(String relName, Persistent val)`
  Initializes reverse relationship from object `val` to this object.
  `void`
  `setSnapshotVersion(long snapshotVersion)`
  `List<? extends Persistent>`
  `setToManyTarget(String relName, Collection<? extends Persistent> values, boolean setReverse)`
  Sets the relationships to the specified `Persistent` objects.
  `void`
  `setToOneTarget(String relationshipName, Persistent value, boolean setReverse)`
  Sets to-one relationship to a new value.
  `String`
  `toString()`
  `StringBuffer`
  `toStringBuffer(StringBuffer buffer, boolean fullDesc)`
  A variation of "toString" method, that may be more efficient in some cases.
  `protected void`
  `unsetReverseRelationship(String relName, Persistent val)`
  Removes current object from reverse relationship of object `val` to this object.
  `void`
  `validateForDelete(ValidationResult validationResult)`
  This implementation does nothing.
  `void`
  `validateForInsert(ValidationResult validationResult)`
  Calls `PersistentObject.validateForSave(ValidationResult)`.
  `protected void`
  `validateForSave(ValidationResult validationResult)`
  Performs property validation of the object, appending any validation failures to the provided validationResult object.
  `void`
  `validateForUpdate(ValidationResult validationResult)`
  Calls `PersistentObject.validateForSave(ValidationResult)`.
  `protected void`
  `willConnect(String relationshipName, Persistent object)`
  Called before establishing a relationship with another object.
  `void`
  `writeProperty(String propName, Object val)`
  Sets the property to the new value.
  `protected void`
  `writeSerialized(ObjectOutputStream out)`

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### values

    protected Map<String,Object> values

- ## Constructor Details

  - ### GenericPersistentObject

    public GenericPersistentObject()

- ## Method Details

  - ### setPersistenceState

    public void setPersistenceState(int persistenceState)
    Specified by:
      `setPersistenceState` in interface `Persistent`
    Overrides:
      `setPersistenceState` in class `PersistentObject`

  - ### readPropertyDirectly

    public Object readPropertyDirectly(String propName)
    Description copied from interface: `Persistent`
    Returns mapped property value as currently stored in the Persistent object. Returned value maybe a fault or a real value. This method will not attempt to resolve faults, or to read unmapped properties.
    Specified by:
      `readPropertyDirectly` in interface `Persistent`
    Overrides:
      `readPropertyDirectly` in class `PersistentObject`

  - ### writePropertyDirectly

    public void writePropertyDirectly(String propName, Object val)
    Description copied from interface: `Persistent`
    Modifies a value of a named property without altering the object state in any way, and without triggering any database operations. This method is intended mostly for internal use by Cayenne framework, and shouldn't be called from the application code.
    Specified by:
      `writePropertyDirectly` in interface `Persistent`
    Overrides:
      `writePropertyDirectly` in class `PersistentObject`

  - ### appendProperties

    protected void appendProperties(StringBuffer buffer)
    Overrides:
      `appendProperties` in class `PersistentObject`

  - ### readState

    protected void readState(ObjectInputStream in) throws IOException, ClassNotFoundException
    Overrides:
      `readState` in class `PersistentObject`
    Throws:
      `IOException`
      `ClassNotFoundException`

  - ### writeState

    protected void writeState(ObjectOutputStream out) throws IOException
    Overrides:
      `writeState` in class `PersistentObject`
    Throws:
      `IOException`