Isolation and Database Locking
Transaction isolation (the “I” in ACID) is a critical part of any transactional system. This section explains isolation conditions, database locking, and transaction isolation levels. These concepts are important when deploying any transactional system.
Dirty, Repeatable, and Phantom Reads
Transaction isolation is defined in
terms of isolation conditions called
dirty reads,
repeatable reads, and
phantom reads. These
conditions describe what can happen when two or more transactions
operate on the same data.[48] To illustrate these
conditions, let’s think about two separate client
applications using their own instances of the TravelAgent EJB to
access the same data—specifically, a cabin record with the
primary key of 99. These examples revolve around the
RESERVATION
table, which is accessed by both the
bookPassage( )
method (through the Reservation
EJB) and the listAvailableCabins( )
method
(through JDBC). (It might be a good idea to go back to Chapter 11 and review how the
RESERVATION
table is accessed through these
methods. This will help you to understand how two transactions
executed by two different clients can impact each other.) Assume that
both methods have a transaction attribute of
Required
.
Dirty reads
A
dirty read
occurs when a transaction reads uncommitted changes made by a previous transaction. If the first transaction is rolled back, the data read by the second transaction becomes invalid because the rollback undoes the changes. The ...
Get Enterprise JavaBeans, Fourth Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.