Вопрос о распространении весенней транзакции - PullRequest
10 голосов
/ 02 мая 2010

У меня вопрос по поводу распространения весенней транзакции. Если я использую @ Transactional (распространение = распространение. REQUIRED) , чтобы аннотировать метод m1. Когда логика выполнения вводит m1, если транзакция уже есть, m1 будет использовать ее. Когда после m1, как насчет сделки? Он заканчивается или все еще открыт? (Если я вызываю m1 в другом методе, и после вызова есть еще другие действия).

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

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

1 Ответ

19 голосов
/ 02 мая 2010

Propagation.REQUIRED (задокументировано здесь ) создаст новую транзакцию (если ее нет для текущего потока) или присоединится к существующей транзакции (если она существует).

Когда метод завершается, транзакция будет завершена (если ввод метода вызвал создание транзакции), или оставит транзакцию открытой (если транзакция уже существовала на момент ввода метода). Другими словами, он симметричен и оставит транзакционное состояние потока в том же состоянии, в каком оно было до ввода метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...