В чем разница между @Transactional (rollbackFor = Exception.class) и @Transactional (распространение = Propagation.REQUIRED) - PullRequest
0 голосов
/ 27 февраля 2019
@Transactional(rollbackFor = Exception.class) 
public void foo1() {
    `/**Some Code**/`
}

@Transactional(propagation=Propagation.REQUIRED)
public void foo2() {
    `/**Some Code**/`
}

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

@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 голосов
/ 27 февраля 2019

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

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

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