|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Transaction
A programmatically handled transaction. All operations that work with the node space (even read operations) must be wrapped in a transaction. Transactions can either be handled programmatically, through this interface, or by a container through the Java Transaction API (JTA). The Transaction interface makes handling programmatic transactions easier than in JTA. Here's the idiomatic use of programmatic transactions in Neo:
Transaction tx = neo.beginTx();
try
{
... // any operation that works with the node space
tx.success();
}
finally
{
tx.finish();
}
Let's walk through this example line by line. First we retrieve a Transaction
object by invoking the NeoService.beginTx()
factory method. This
creates a new Transaction instance which has internal state to keep track of
whether the current transaction is successful. Then we wrap all operations
that work with the node space in a try-finally block. At the end of the
block, we invoke the tx.success()
method to indicate that
the transaction is successful. As we exit the block, the finally clause will
kick in and tx.finish
will commit the transaction if the
internal state indicates success or else mark it for rollback.
If an exception is raised in the try-block, tx.success()
will
never be invoked and the internal state of the transaction object will cause
tx.finish()
to roll back the transaction. This is very
important: unless success()
is invoked, the transaction will fail
upon finish()
. A transaction can be explicitly marked for rollback
by invoking the tx.failure()
method.
Method Summary | |
---|---|
void |
failure()
Marks this transaction as failed, which means that it will inexplicably be rolled back upon invocation of finish() . |
void |
finish()
Commits or marks this transaction for rollback, depending on whether success() or failure() has been previously invoked. |
void |
success()
Marks this transaction as successful, which means that it will be commited upon invocation of finish() unless failure()
has or will be invoked before then. |
Method Detail |
---|
void failure()
finish()
. Once this method
has been invoked, it doesn't matter how many times success()
is
invoked -- the transaction will still be rolled back.
void success()
finish()
unless failure()
has or will be invoked before then.
void finish()
success()
or failure()
has been previously invoked.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |