, поскольку я пока не могу комментировать, отправлю ответ только для того, чтобы прокомментировать ответ Vinegar, ситуация с возвращением setAutoCommit () в состояние по умолчанию при возвращении соединения в пул не является обязательным поведением и не должна восприниматься как должное, также как закрытие операторов и наборы результатов; Вы можете прочитать, что он должен быть закрыт, но если вы не закроете их, они будут автоматически закрыты при закрытии соединения. Не принимайте это как должное, так как это займет ваши ресурсы в некоторых версиях драйверов jdbc.
У нас были серьезные проблемы с базой данных DB2 на AS400, ребята, которым требовалась изоляция транзакций, вызывали connection.setAutoCommit (false), и после завершения работы они возвращали такое соединение с пулом (JNDI) без connection.setAutoCommit (old_state), поэтому, когда другой поток получил это соединение из пула, вставки и обновления не зафиксированы, и никто не мог понять, почему долго ...