javax.jdo
Interface Transaction


public interface Transaction

The JDO Transaction interface provides for initiation and completion of transactions under user control. It is a sub-interface of the PersistenceManager that deals with options and transaction demarcation.

Transaction options include whether optimistic concurrency control should be used for the current transaction, whether instances may hold values in the cache outside transactions, and whether values should be retained in the cache after transaction completion. These options are valid for both managed and non-managed transactions.

Transaction completion methods have the same semantics as javax.transaction.UserTransaction, and are valid only in the non-managed, non-distributed transaction environment.

For operation in the distributed environment, Transaction is declared to implement javax.transaction.Synchronization. This allows for flushing the cache to the data store during externally managed transaction completion.

Version:
0.9
Author:
Craig Russell

Method Summary
 void begin()
          Begin a transaction.
 void commit()
          Commit the current transaction.
 boolean getNontransactionalRead()
          If true, allows persistent instances to be read without a transaction active.
 boolean getNontransactionalWrite()
          If true, allows persistent instances to be written without a transaction active.
 boolean getOptimistic()
          Optimistic transactions do not hold data store locks until commit time.
 PersistenceManager getPersistenceManager()
          The Transaction instance is always associated with exactly one PersistenceManager.
 boolean getRestoreValues()
          Return the current value of the restoreValues property.
 boolean getRetainValues()
          If true, at commit time instances retain their field values.
 Synchronization getSynchronization()
          The user-specified Synchronization instance for this Transaction instance.
 boolean isActive()
          Returns whether there is a transaction currently active.
 void rollback()
          Roll back the current transaction.
 void setNontransactionalRead(boolean nontransactionalRead)
          If true, allow persistent instances to be read without a transaction active.
 void setNontransactionalWrite(boolean nontransactionalWrite)
          If true, allow persistent instances to be written without a transaction active.
 void setOptimistic(boolean optimistic)
          Optimistic transactions do not hold data store locks until commit time.
 void setRestoreValues(boolean restoreValues)
          If true, at rollback, fields of newly persistent instances are restored to their values as of the beginning of the transaction, and the instances revert to transient.
 void setRetainValues(boolean retainValues)
          If true, at commit instances retain their values and the instances transition to persistent-nontransactional.
 void setSynchronization(Synchronization sync)
          The user can specify a Synchronization instance to be notified on transaction completions.
 

Method Detail

begin

public void begin()
Begin a transaction. The type of transaction is determined by the setting of the Optimistic flag.

Throws:
JDOUserException - if transactions are managed by a container in the managed environment, or if the transaction is already active.
See Also:
setOptimistic(boolean), getOptimistic()

commit

public void commit()
Commit the current transaction.

Throws:
JDOUserException - if transactions are managed by a container in the managed environment, or if the transaction is not active.

rollback

public void rollback()
Roll back the current transaction.

Throws:
JDOUserException - if transactions are managed by a container in the managed environment, or if the transaction is not active.

isActive

public boolean isActive()
Returns whether there is a transaction currently active.

Returns:
true if the transaction is active.

setNontransactionalRead

public void setNontransactionalRead(boolean nontransactionalRead)
If true, allow persistent instances to be read without a transaction active. If an implementation does not support this option, a JDOUnsupportedOptionException is thrown.

Parameters:
nontransactionalRead - the value of the nontransactionalRead property

getNontransactionalRead

public boolean getNontransactionalRead()
If true, allows persistent instances to be read without a transaction active.

Returns:
the value of the nontransactionalRead property

setNontransactionalWrite

public void setNontransactionalWrite(boolean nontransactionalWrite)
If true, allow persistent instances to be written without a transaction active. If an implementation does not support this option, a JDOUnsupportedOptionException is thrown.

Parameters:
nontransactionalWrite - the value of the nontransactionalRead property

getNontransactionalWrite

public boolean getNontransactionalWrite()
If true, allows persistent instances to be written without a transaction active.

Returns:
the value of the nontransactionalWrite property

setRetainValues

public void setRetainValues(boolean retainValues)
If true, at commit instances retain their values and the instances transition to persistent-nontransactional. If an implementation does not support this option, a JDOUnsupportedOptionException is thrown.

Parameters:
retainValues - the value of the retainValues property

getRetainValues

public boolean getRetainValues()
If true, at commit time instances retain their field values.

Returns:
the value of the retainValues property

setRestoreValues

public void setRestoreValues(boolean restoreValues)
If true, at rollback, fields of newly persistent instances are restored to their values as of the beginning of the transaction, and the instances revert to transient. Additionally, fields of modified instances of primitive types and immutable reference types are restored to their values as of the beginning of the transaction.

If false, at rollback, the values of fields of newly persistent instances are unchanged and the instances revert to transient. Additionally, dirty instances transition to hollow. If an implementation does not support this option, a JDOUnsupportedOptionException is thrown.

Parameters:
restoreValues - the value of the restoreValues property

getRestoreValues

public boolean getRestoreValues()
Return the current value of the restoreValues property.

Returns:
the value of the restoreValues property

setOptimistic

public void setOptimistic(boolean optimistic)
Optimistic transactions do not hold data store locks until commit time. If an implementation does not support this option, a JDOUnsupportedOptionException is thrown.

Parameters:
optimistic - the value of the Optimistic flag.

getOptimistic

public boolean getOptimistic()
Optimistic transactions do not hold data store locks until commit time.

Returns:
the value of the Optimistic property.

setSynchronization

public void setSynchronization(Synchronization sync)
The user can specify a Synchronization instance to be notified on transaction completions. The beforeCompletion method is called prior to flushing instances to the data store.

The afterCompletion method is called after performing state transitions of persistent and transactional instances, following the data store commit or rollback operation.

Only one Synchronization instance can be registered with the Transaction. If the application requires more than one instance to receive synchronization callbacks, then the single application instance is responsible for managing them, and forwarding callbacks to them.

Parameters:
sync - the Synchronization instance to be notified; null for none

getSynchronization

public Synchronization getSynchronization()
The user-specified Synchronization instance for this Transaction instance.

Returns:
the user-specified Synchronization instance.

getPersistenceManager

public PersistenceManager getPersistenceManager()
The Transaction instance is always associated with exactly one PersistenceManager.

Returns:
the PersistenceManager for this Transaction instance