Как работает приостановка транзакции в Spring?

Мой вопрос в основном такой же, какВот, но я не удовлетворен ответом, поэтому я пишу этот вопрос.

В руководстве Spring Framework указано, что для PROPAGATION_REQUIRES_NEW текущая транзакция будет приостановлена. Как это на самом деле реализовано? Я знаю, что большинство баз данных не поддерживают вложенные транзакции и могут иметь только одну транзакцию в одном соединении. Это означает, что вы не можете просто «не использовать» исходную транзакцию и начать новую - перед началом новой вы должны подтвердить или отменить исходную транзакцию.

Пример:

START TRANSACTION
SELECT ...
UPDATE ...
-- Now we run method with PROPAGATION_REQUIRES_NEW
-- How do we "suspend" transaction so we can start new one?
START TRANSACTION
UPDATE ...
COMMIT
-- We returned from the method, result was commited
-- Now we'd like to "unsuspend" the original transaction so it can be commited/rollbacked, but how?

Или это возможно реализовано с использованием другого соединения (объект Session)? Чтобы мы перестали использовать исходное соединение и создали новое, где мы можем начать новую транзакцию?

Я упускаю здесь что-то настолько очевидное, что никому нет дела до объяснения этого (по крайней мере, в документах Spring, Spring in Action, Spring сохраняются в Hibernate)

Большое спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос