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.
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.