package com.revolsys.transaction; import org.springframework.transaction.PlatformTransactionManager; public interface Transactionable { PlatformTransactionManager getTransactionManager(); /** * Construct a new {@link Transaction} with {@link Propagation#REQUIRES_NEW}. * @return The transaction. */ default Transaction newTransaction() { final PlatformTransactionManager transactionManager = getTransactionManager(); return new Transaction(transactionManager, Propagation.REQUIRES_NEW); } /** * Construct a new {@link Transaction} with the specified {@link Propagation}. * * @param propagation The transaction propagation. * @return The transaction. */ default Transaction newTransaction(final Propagation propagation) { final PlatformTransactionManager transactionManager = getTransactionManager(); return new Transaction(transactionManager, propagation); } }