Вложенный @Transactional - PullRequest
       18

Вложенный @Transactional

17 голосов
/ 09 июля 2011

Можно ли вкладывать аннотированные методы @Transactional весной? Рассмотрим что-то вроде этого:

@Transactional
public void a() {
    obj.b();
}

@Transactional
public void b() {
    // ... 
}

Что происходит в таком случае, если я выполняю откат в b () и откат в ()?

1 Ответ

31 голосов
/ 09 июля 2011

Вторая @Transactional аннотация для метода b() не требуется, поскольку по умолчанию @Transactional имеет распространение REQUIRED, поэтому методы, вызываемые методом a() будет транзакционным.Если вы хотите начать новую транзакцию в методе, вызываемом методом a(), вам необходимо изменить правила распространения.Читать о Распространении транзакции .

...