|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface Transaction
This interfaces provides the operations necessary to perform database transactions.
All access, creation, and modification of persistent objects and their fields
must be done within a transaction. Before performing any database operations,
a thread must explicitly create a transaction object or associate itself with
an existing transaction object (by calling join
),
and that transaction must be open (through a call to begin
).
All subsequent operations by the thread, including reads, writes, and lock
acquisitions, are done under the thread�s current transaction.
A thread may only operate on its current transaction. For example,
a TransactionNotInProgressException
is thrown if a thread attempts
to begin, commit, checkpoint, or abort a transaction prior to joining itself
to that transaction.
A transaction is either open or closed. A transaction is open if a call
has been made to begin
, but no call has been made to commit
or
abort
. Once commit
or abort
is called,
the transaction is closed. The method isOpen
can be called to
determine the state of the transaction.
Read locks are implicitly obtained on objects as they are accessed.
Write locks are implicitly obtained as objects are modified.
Transaction
objects are transient, they cannot be stored in the database.
TransactionNotInProgressException
Field Summary | |
---|---|
static int |
READ
Read lock mode. |
static int |
UPGRADE
Upgrade lock mode. |
static int |
WRITE
Write lock mode. |
Method Summary | |
---|---|
void |
abort()
Abort and close the transaction. |
void |
begin()
Start a transaction. |
void |
checkpoint()
Commit the transaction, but reopen the transaction, retaining all locks. |
void |
commit()
Commit and close the transaction. |
boolean |
isOpen()
Determine whether the transaction is open or not. |
void |
join()
Attach the caller's thread to this Transaction and detach the thread
from any former Transaction the thread may have been associated with. |
void |
leave()
Detach the caller's thread from this Transaction , but do not attach
the thread to another Transaction . |
void |
lock(Object obj,
int lockMode)
Upgrade the lock on the given object to the given lock mode. |
boolean |
tryLock(Object obj,
int lockMode)
Upgrade the lock on the given object to the given lock mode. |
Field Detail |
---|
static final int READ
static final int UPGRADE
static final int WRITE
Method Detail |
---|
void join()
Transaction
and detach the thread
from any former Transaction
the thread may have been associated with.
void leave()
Transaction
, but do not attach
the thread to another Transaction
.
void begin()
begin
multiple times on the same transaction object,
without an intervening call to commit
or abort
,
causes the exception TransactionInProgressException
to be thrown
on the second and subsequent calls. Operations executed before a transaction
has been opened, or before reopening after a transaction is aborted or committed,
have undefined results;
these may throw a TransactionNotInProgressException
exception.
boolean isOpen()
begin
,
but a subsequent call to either commit
or abort
has not been made.
void commit()
commit
commits to the database all persistent object
modifications within the transaction and releases any locks held by the transaction.
A persistent object modification is an update of any field of an existing
persistent object, or an update or creation of a new named object in the database.
If a persistent object modification results in a reference from an existing
persistent object to a transient object, the transient object is moved to the
database, and all references to it updated accordingly. Note that the act of
moving a transient object to the database may create still more persistent
references to transient objects, so its referents must be examined and moved as well.
This process continues until the database contains no references to transient objects,
a condition that is guaranteed as part of transaction commit.
Committing a transaction does not remove from memory transient objects created
during the transaction
void abort()
void checkpoint()
checkpoint
commits persistent object modifications made
within the transaction since the last checkpoint to the database.
The transaction retains all locks it held on those objects at the time the
checkpoint was invoked.
void lock(Object obj, int lockMode) throws LockNotGrantedException
obj
- The object to acquire a lock on.lockMode
- The lock mode to acquire. The lock modes are READ
,
UPGRADE
, and WRITE
.
LockNotGrantedException
- Is thrown if the given lock mode could not be acquired.boolean tryLock(Object obj, int lockMode)
tryLock
is the same as lock
except it returns
a boolean indicating whether the lock was granted instead of generating an exception.
obj
- The object to acquire a lock on.lockMode
- The lock mode to acquire. The lock modes are READ
,
UPGRADE
, and WRITE
.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |