0

Вот пример, где я использую JdbcTemplate. Мой вопрос doMultipleCalls() сбой на шаге 3 из-за runTimeException, все будет откатываться. У меня есть @Transactional аннотация только doMultipleCalls, но не другим. Является ли тот же сеанс транзакций общим для всех из них ?. Если не так, как пройти один и тот же сеанс транзакции?Откат транзакции весны с аннотацией @Transaction с использованием jdbcTemplates

@Component 
public class MyRespository { 

@Autowired 
JdbcTemplate template 

@Transactional 
public void doMutlipleCalls() { 
    callUpdate(); //1 
    callInsert(); //2 
    callDelete(); //3 
} 

callUpdate() { 
    template.query(...) 
} 

callInsert() { 
    template.query(...) 
} 

callDelete() { 
    template.query(..) 
} 

} 

ответ

1

тот же сеанс транзакции разделяемом во всех из них?

Да. Сделка начинается до ввода метода doMultipleCalls() и завершается после ее возвращения.

+0

так что это означало бы, если какой-либо вызов метода внутри 'doMultipleCalls' (скажем, 3) вызывает исключение RunTimeException, вызовы 1 и 2 возвращаются вправо? –

+0

Справа. Любое исключенное исключение приведет к откату транзакции –

1

Когда вы используете spring jdbc с транзакционным, он действует так же, как и с jpa. Ваши действия завершаются в рамках одной транзакции.

Проверьте это article.

Смежные вопросы