[[transaction]] = Transaction Management Comprehensive transaction support is among the most compelling reasons to use the Spring Framework. The Spring Framework provides a consistent abstraction for transaction management that delivers the following benefits: * A consistent programming model across different transaction APIs, such as Java Transaction API (JTA), JDBC, Hibernate, and the Java Persistence API (JPA). * Support for <>. * A simpler API for <> transaction management than complex transaction APIs, such as JTA. * Excellent integration with Spring's data access abstractions. The following sections describe the Spring Framework's transaction features and technologies: * <> describes why you would use the Spring Framework's transaction abstraction instead of EJB Container-Managed Transactions (CMT) or choosing to drive local transactions through a proprietary API, such as Hibernate. * <> outlines the core classes and describes how to configure and obtain `DataSource` instances from a variety of sources. * <> describes how the application code ensures that resources are created, reused, and cleaned up properly. * <> describes support for declarative transaction management. * <> covers support for programmatic (that is, explicitly coded) transaction management. * <> describes how you could use application events within a transaction. The chapter also includes discussions of best practices, <>, and <>.