Class ProgramTransaction
- All Implemented Interfaces:
AutoCloseable
This is meant to be used as an idiom in a try-with-resources block:
try (ProgramTransaction t = ProgramTransaction.open(program, "Demo")) { program.getMemory()..... t.commit(); }
This idiom is very useful if there is complex logic in your transaction, it's very easy to forget
to close the transaction, especially if an error occurs, leaving the database in an open
transaction indefinitely. The try-with-resources block will ensure that the transaction is closed
in all circumstances. Note, however, that in order for the transaction to be committed, you must
call commit()
.
Any exceptions within the block will cause t.commit()
to be skipped, thus aborting the
transaction.
-
Field Summary
Fields -
Method Summary
-
Field Details
-
program
-
tid
protected int tid -
commit
protected boolean commit
-
-
Method Details
-
open
Start a transaction on the given program with the given description- Parameters:
program
- the program to modifydescription
- a description of the transaction
-
close
public void close()Finish the transactionIf this is called before
commit()
, then the transaction is aborted. This is called automatically at the close of a try-with-resources block.- Specified by:
close
in interfaceAutoCloseable
-
commit
public void commit()Finish the transaction, and commitThis MUST be called in order to commit the transaction. The transaction is not committed until the close of the try-with-resources block.
-