Если у меня есть трансдейственные методы A, B, C и вызовы B, C; затем, C выдает исключение, которое не поймано в A.
Мой вопрос состоит в том, если B будет откатываться или нет?
Обратите внимание на то, что вложенные транзакции отключены по умолчанию, таким образом, A, B, C являются все трансдейственными собой.
Спасибо
Обратите внимание, что Spring по умолчанию откатывает транзакции только тогда, когда RuntimeException (или подкласс) выбрасывается за границы транзакции (то есть когда исключение не перехватывается вашим транзакционным методом).
Проверенное исключение НЕ приведет к тому, что Spring пометит транзакцию для отката, если вы не укажете это явно.
Да.
Если A, B и C являются методами @Transactional
, а A вызывает B и C, Spring будет управлять транзакционным характером всех трех с помощью одной транзакции. Другими словами, вызов A, B и C фактически будет использовать одну транзакцию. Если C выдает исключение, единственная транзакция, используемая A, B и C, будет отменена.