Использует ли каждая стековая транзакция отдельное соединение?

У меня есть несколько стековых транзакций, созданных путем вызова стековых методов с:

@Transactional(propagation = Propagation.REQUIRES_NEW)

таким образом, результат - транзакция, ожидающая новую транзакцию, ожидающая новую транзакцию ...

Использует ли каждая из этих транзакций отдельное соединение с базой данных из пула соединений, возможно, из-за его истощения?

PS: я знаю, что не должен составлять новые транзакции из-за ошибок, не откатывая все транзакции, но мне любопытно поведение.

Всего 1 ответ


Да, когда вы используете REQUIRES_NEW, вы будете получать новую транзакцию для каждого вызова метода. Новая транзакция означает, что используется новое соединение с базой данных из пула.

И да, это означает потенциально голодать.

Вам может понравиться эта книга транзакций базы данных для более подробной информации, включая множество примеров кода: https://www.marcobehler.com/books/1-java-database-connections-transactions


Есть идеи?

10000