Does Jdbi3 guarantee rollback on transaction for every type of Exception?

Introduction

Let's consider Jdbi 3.27.0.

Documentation

Please, see the Javadoc for the org.jdbi.v3.core.Jdbi#inTransaction(org.jdbi.v3.core.HandleCallback<R,X>) method:

inTransaction

public <R, X extends Exception> R inTransaction (HandleCallback<R,X> callback) throws X

A convenience function which manages the lifecycle of a handle and yields it to a callback for use by clients. The handle will be in a transaction when the callback is invoked, and that transaction will be committed if the callback finishes normally, or rolled back if the callback raises an exception.

Type Parameters:

R - type returned by the callback

X - exception type thrown by the callback, if any.

Parameters:

callback - A callback which will receive an open Handle, in a transaction

Returns:

the value returned by callback

Throws:

X - any exception thrown by the callback

Please, note the text marked in bold, which should answer your question:

The handle will be in a transaction when the callback is invoked, and that transaction will be committed if the callback finishes normally, or rolled back if the callback raises an exception.

Throws:

X - any exception thrown by the callback

As we can see, there is no statement claiming that the exception handling behavior depends on the exception type.

Source code

Please, consider the information provided in this section as a draft: it may be rough (imprecise).

There are tests that cover the transaction-related functionality.
The tests are represented by the TestTransactions class: jdbi/TestTransactions.java at v3.27.0 · jdbi/jdbi.

Please, take a look at the entire test class.

Then, please, note the following exception-related test methods:

  1. testExceptionAbortsTransaction().
  2. testExceptionAbortsUseTransaction().

As we can examine from the implementations of these test methods:

  1. The implementations use the java.io.IOException exception type.
  2. The implementations does not mention that the exception handling behavior depends on the exception type.