"A mistake is to commit a misunderstanding.”
—Bob Dylan
The ability for tasks to be completed predictably is an integral part of any real-world application. The transaction facilities in the middleware or server-side applications are responsible for ensuring this predictability. In this chapter, we begin by examining some basic concepts surrounding transactions and how transactions are used in Java. We then look at the concept of transactions in JDO and the more complicated scenarios resulting from integration into managed environments. (Refer to Chapter 1 for more information on managed environments.)