Package com.gruelbox.transactionoutbox
Class JooqTransactionManager
- java.lang.Object
-
- com.gruelbox.transactionoutbox.JooqTransactionManager
-
- All Implemented Interfaces:
TransactionManager
public final class JooqTransactionManager extends Object
Transaction manager which uses jOOQ's transaction management. In order to wire into JOOQ's transaction lifecycle, a slightly convoluted construction process is required which involves first creating aJooqTransactionListener
, including it in the JOOQConfiguration
while constructing the rootDSLContext
, and then finally linking the listener to the newJooqTransactionManager
:DataSourceConnectionProvider connectionProvider = new DataSourceConnectionProvider(dataSource); DefaultConfiguration configuration = new DefaultConfiguration(); configuration.setConnectionProvider(connectionProvider); configuration.setSQLDialect(SQLDialect.H2); configuration.setTransactionProvider(new ThreadLocalTransactionProvider(connectionProvider)); JooqTransactionListener listener = JooqTransactionManager.createListener(); configuration.set(listener); DSLContext dsl = DSL.using(configuration); return JooqTransactionManager.create(dsl, listener);
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static JooqTransactionManager
create(org.jooq.DSLContext dslContext, JooqTransactionListener listener)
Creates the transaction manager.static JooqTransactionListener
createListener()
Creates theTransactionListener
to wire into theDSLContext
.void
inTransaction(TransactionalWork arg0)
void
inTransaction(Runnable arg0)
<T extends Object>
TinTransactionReturns(TransactionalSupplier<T> arg0)
<T,E extends Exception>
TinTransactionReturnsThrows(ThrowingTransactionalSupplier<T,E> work)
<E extends Exception>
voidinTransactionThrows(ThrowingTransactionalWork<E> arg0)
<T extends Object,E extends Exception>
TrequireTransactionReturns(ThrowingTransactionalSupplier<T,E> arg0)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.gruelbox.transactionoutbox.TransactionManager
requireTransaction
-
-
-
-
Method Detail
-
createListener
public static JooqTransactionListener createListener()
Creates theTransactionListener
to wire into theDSLContext
. See class-level documentation for more detail.- Returns:
- The transaction listener.
-
create
public static JooqTransactionManager create(org.jooq.DSLContext dslContext, JooqTransactionListener listener)
Creates the transaction manager.- Parameters:
dslContext
- The DSL context.listener
- The listener, linked to the DSL context.- Returns:
- The transaction manager.
-
inTransactionReturnsThrows
public <T,E extends Exception> T inTransactionReturnsThrows(ThrowingTransactionalSupplier<T,E> work)
-
inTransaction
public final void inTransaction(Runnable arg0)
- Specified by:
inTransaction
in interfaceTransactionManager
-
inTransaction
public final void inTransaction(TransactionalWork arg0)
- Specified by:
inTransaction
in interfaceTransactionManager
-
inTransactionReturns
public final <T extends Object> T inTransactionReturns(TransactionalSupplier<T> arg0)
- Specified by:
inTransactionReturns
in interfaceTransactionManager
-
inTransactionThrows
public final <E extends Exception> void inTransactionThrows(ThrowingTransactionalWork<E> arg0) throws E extends Exception
- Specified by:
inTransactionThrows
in interfaceTransactionManager
- Throws:
E extends Exception
-
requireTransactionReturns
public <T extends Object,E extends Exception> T requireTransactionReturns(ThrowingTransactionalSupplier<T,E> arg0) throws E extends Exception, NoTransactionActiveException
- Specified by:
requireTransactionReturns
in interfaceTransactionManager
- Throws:
E extends Exception
NoTransactionActiveException
-
-