Entity States (Entity Life cycle)
The above picture explains how an entity object moves from one state to another..
When an entity row is in memory, it has an entity state that reflects the logical state of the row. When an entity row is first created, its status is New
. You can use the setNewRowState()
method to mark the entity as being Initialized
, which removes it from the transaction's list of pending changes until the user sets at least one of its attributes, at which time it returns to the New
state. This allows you to create more than one initialized row and post only those that the user modifies.
The Unmodified
state reflects an entity that has been retrieved from the database and has not yet been modified. It is also the state that a New
or Modified
entity transitions to after the transaction successfully commits. During the transaction in which it is pending to be deleted, an Unmodified
entity row transitions to the Deleted
state. Finally, if a row that was New
and then was removed before the transaction commits, or Unmodified
and then successfully deleted, the row transitions to the Dead
state.
getEntityState()
method to access the current state of an entity row in your business logic code.If you use the
postChanges()
method to post pending changes without committing the transaction yet, the getPostState()
method returns the entity's state from the point of view of it's being posted to the database or not. For example, a new entity row that has been inserted into the database due to your calling the postChanges()
method programmatically — but which has not yet been committed — will have a different value for getPostState()
and getEntityState()
. The getPostState()
method will reflect an "Unmodified" status since the new row has been posted, however the getEntityState()
will still reflect that the entity is New
in the current transaction.