Appendix A. Lifecycle States and Transitions

Appendix A. Lifecycle States and Transitions

Table A-1 specifies the values returned by the JDOHelper lifecycle state interrogation methods for all the JDO lifecycle states.

Table A-1. Lifecycle-state interrogation methods

State of instance

isPersistent( )

isTransactional( )

isDirty( )

isNew( )

isDeleted( )

Transient

false
false
false
false
false

Transient-clean

false
true
false
false
false

Transient-dirty

false
true
true
false
false

Hollow

true
false
false
false
false

Persistent-nontransactional

true
false
false
false
false

Persistent-new

true
true
true
true
false

Persistent-clean

true
true
false
false
false

Persistent-dirty

true
true
true
false
false

Persistent-deleted

true
true
true
false
true

Persistent-new-deleted

true
true
true
true
true

Table A-2 and Table A-3 contain the state transitions for every lifecycle state.

Table A-2. Lifecycle-state transitions
 

Current state

Method

Transient

P-new

P-clean

P-dirty

Hollow

makePersistent

P-new

unchanged

unchanged

unchanged

unchanged

deletePersistent

error

P-new-del

P-del

P-del

P-del

makeTransactional

T-clean

unchanged

unchanged

unchanged

P-clean

makeNontransactional

error

error

P-nontrans

error

unchanged

makeTransient

unchanged

error

Transient

error

Transient

commit withRetainValues = false

unchanged

Hollow

Hollow

Hollow

unchanged

commit withRetainValues = true

unchanged

P-nontrans

P-nontrans

P-nontrans

unchanged

rollback with RestoreValues = false

unchanged

Transient

Hollow

Hollow

unchanged

rollback with RestoreValues = true

unchanged

Transient

P-nontrans

P-nontrans

unchanged

refresh with active datastore transaction

unchanged

unchanged

unchanged

P-clean

unchanged

refresh with active optimistic transaction

unchanged

unchanged

unchanged

P-nontrans

unchanged

evict

n/a

unchanged

Hollow

unchanged

unchanged

read field outsideof a transaction

unchanged

impossible

impossible

impossible

P-nontrans

read field with active optimistic transaction

unchanged

unchanged

unchanged

unchanged

P-nontrans

read field with active datastore transaction

unchanged

unchanged

unchanged

unchanged

P-clean

write field or makeDirty outside of a transaction

unchanged

impossible

impossible

impossible

P-nontrans

write field or makeDirty with active transaction

unchanged

unchanged

P-dirty

unchanged

P-dirty

retrieve outside of a transaction or with active optimistic transaction

unchanged

unchanged

unchanged

unchanged

P-nontrans

retrieve with active datastore transaction

unchanged

unchanged

unchanged

unchanged

P-clean

error: a JDOUserException is thrown; the state does not change

Table A-3. Lifecycle-state transitions (continued)

Current state

 

T-clean

T-dirty

P-new-del

P-del

P-nontrans

Method

P-new

P-new

unchanged

unchanged

unchanged

makePersistent

error

error

unchanged

unchanged

P-del

deletePersistent

unchanged

unchanged

unchanged

unchanged

P-clean

makeTransactional

Transient

error

error

error

unchanged

makeNontransactional

unchanged

unchanged

error

error

Transient

makeTransient

unchanged

T-clean

Transient

Transient

unchanged

commit withRetainValues = false

unchanged

T-clean

Transient

Transient

unchanged

commit withRetainValues = true

unchanged

T-clean

Transient

Hollow

unchanged

rollback withRestoreValues = false

unchanged

T-clean

Transient

P-nontrans

unchanged

rollback withRestoreValues = true

unchanged

unchanged

unchanged

unchanged

unchanged

refresh with active datastore transaction

unchanged

unchanged

unchanged

unchanged

unchanged

refresh with active optimistic transaction

unchanged

unchanged

unchanged

unchanged

Hollow

evict

unchanged

impossible

impossible

impossible

unchanged

read field outsideof a transaction

unchanged

unchanged

error

error

unchanged

read field with active optimistic transaction

unchanged

unchanged

error

error

P-clean

read field with active datastore transaction

unchanged

impossible

impossible

impossible

unchanged

write field or makeDirty outside of a transaction

T-dirty

unchanged

error

error

P-dirty

write field or makeDirty with active transaction

unchanged

unchanged

unchanged

unchanged

unchanged

retrieve outside of a transaction or with active optimistic transaction

unchanged

unchanged

unchanged

unchanged

P-clean

retrieve with an active datastore transaction

unchanged: no state change takes place; no exception is thrown due to the state change