В чем разница между @Transactional (rollbackFor = Exception.class) и @Transactional (распространение = Propagation.REQUIRED)

Вы можете использовать функцию CreateProcessWithLogonW или аналогичные CreateProcessAsUser и CreateProcessWithTokenW .

1
задан iOS 27 February 2019 в 04:58
поделиться

2 ответа

@Transactional(propagation=Propagation.REQUIRED) и @Transactional(rollbackFor = Exception.class) примерно одинаковы. Как propagation=Propagation.REQUIRED является по умолчанию . Таким образом, с учетом этого они эквивалентны @Transactional(propagation=Propagation.REQUIRED) и @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Exception.class).

Единственное отличие состоит в том, что без rollbackFor = Exception.class он будет выполнять откат только на RuntimeException и Error, а не на другие возникающие исключения. (Это то же самое для JEE при использовании EJB, и поведение также было переведено в Spring).

Это также объясняется в Javadoc @Transactional .

0
ответ дан M. Deinum 27 February 2019 в 04:58
поделиться

Во-первых, по умолчанию propagation всегда присутствует, пишете вы это или нет. Если вы напишите rollbackFor, то транзакция будет отменена, если произойдет исключение.

Вот ссылка для получения дополнительной помощи: @Transactional

0
ответ дан Ammar Ali 27 February 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: