Data-driven enterprise systems consider data integrity as paramount, hence transaction management is a critical feature supported by major databases and application servers. Spring framework provides comprehensive transaction support, abstracting any underlying infrastructure. Spring Transaction support includes a consistent approach across different transaction choices such as JTA, JPA, and JDO. It integrates well with all Spring data-access mechanisms. Spring Transaction supports both declarative and programmatic transaction management.
A transaction can be defined as an atomic unit of data exchange, typically SQL statements in the case of relational databases, which should be either committed or rolled back as a block (all or nothing). A transactional system or a transaction management framework enforces ACID (Atomic, Consistent, Isolated, Durable) properties across the participating systems or resources (such as databases and messaging queues).