Likewise, operations updating multiple tables can take advantage of transactional atomicity in their changes.
Therefore, the code in Listing 13 is useless from a transaction standpoint; although it appears that it USES transactions to maintain atomicity and consistency, in fact it does not.
Joshua Bloch calls this failure atomicity: success or failure based on mutability is forever resolved once the object is constructed (see Resources).
Compared with flow-managed persistence in atomic flows, the most significant change happens to the scope of transactions: atomicity applies to each step of the process rather than the entire flow.
In distributed systems, atomicity means also that a transaction should succeed either in all or in none of the participating nodes.
The code in Listing 2 has visibility failures as well as atomicity failures.