transaction : Java Glossary

A transaction is an atomic unit of work to be done to a
database. It is always applied as a whole, If the database crashes and is recovered,
only complete transactions will be reapplied, no partially completed ones. Often it
is possible to abort a transaction part way through and the work done so far is
undone. In a multithread situation, other threads don’t see the partially
completed changes of some other transaction. Sometimes the term means a message sent
over the Internet to a server. Sometimes it means a demarkated group of messages sent
to a database.

Unless you have a very simple system, if you have networks of interconnected
persistent objects that have to stay in sync, you pretty well have to use some sort
of transaction management to cover all the myriad ways you could fail.

Without some sort of transaction manager, it requires expontially complicated code
to back out of every possible failure. The code cannot be fully exercised during
debugging and it will only fail at the JavaOne demo before the people from HP (Hewlett Packard)
who are thinking of bundling your product with every computer they sell.

The three most common ways of doing transaction management are SQL, EJBand PODs.