PlatformTransactionManager implementation that orchestrates transaction creation, commits and rollbacks to a
list of delegates. Using this implementation assumes that errors causing a transaction rollback will usually happen
before the transaction completion or during the commit of the most inner PlatformTransactionManager.
The configured instances will start transactions in the order given and commit/rollback in reverse order,
which means the PlatformTransactionManager most likely to break the transaction should be the last
in the list configured. A PlatformTransactionManager throwing an exception during commit will automatically
cause the remaining transaction managers to roll back instead of committing.
original source: https://github.com/spring-projects/spring-data-commons/blob/master/src/main/java/org/springframework/data/transaction/ChainedTransactionManager.java