Spring data access wraps JDBC and ORM with templates, exception translation, and transaction management so you do not handle raw DataSource code.
There are 7 propagation levels in spring.
PROPAGATION_MANDATORY : supports current transaction and throws exception if no transaction available. PROPAGATION_NESTED: runs with nested transaction. PROPAGATION_NEVER : does not run with current transaction and throws exception if current transaction exits. PROPAGATION_NOT_SUPPORTED : runs non -transactionaly and does not support current transaction. PROPAGATION_REQUIRED : runs with current transaction and create one if does not exist. PROPAGATION_REQUIRES_NEW : creates new transaction and suspends if exits any. PROPAGATION_SUPPORTS: runs current transaction and runs non -transactionally.