Overview

The IBM Cúram Social Program Management Server Development Environment (SDEJ) abstracts transaction management from the average developer. This section provides a brief overview for the developer and then details what is happening "under the hood". This is a difficult task because of multiple database support, which provide significantly different ways of supporting the ACID nature of a transaction. A transaction should be Atomic1, its result should be Consistent2, Isolated3and Durable4.

1 Atomicity requires that all of the operations of a transaction are performed successfully for the transaction to be considered complete. If all of a transaction's operations cannot be performed, then none of them may be performed.
2 Consistency refers to data consistency. A transaction must transition the data from one consistent state to another. The transaction must preserve the data's semantic and physical integrity.
3 Isolation requires that each transaction appear to be the only transaction currently manipulating the data. Other transactions may run concurrently. However, a transaction should not see the intermediate data manipulations of other transactions until and unless they successfully complete and commit their work. Because of interdependencies among updates, a transaction might get an inconsistent view of the database were it to see just a subset of another transaction's updates. Isolation protects a transaction from this sort of data inconsistency.
4 Durability means that updates made by committed transactions persist in the database regardless of failures that occur after the commit operation and it also ensures that databases can be recovered after a system or media failure.