Добавляя к этому вопрос, что, если метод b() вызывается из a() через прокси? Будет ли это отдельная логическая транзакция с теми же настройками распространения и изоляции, как указано в документах:
Если для параметра распространения установлено значение PROPAGATION_REQUIRED, для каждого метода, к которому применяется этот параметр, создается область логической транзакции. Каждая такая логическая область транзакции может определять статус только для отката индивидуально, при этом внешняя область транзакции логически независима от внутренней области транзакции. Конечно, в случае стандартного поведения PROPAGATION_REQUIRED все эти области будут сопоставлены с одной и той же физической транзакцией. Таким образом, маркер только для отката, установленный во внутренней области транзакции, действительно влияет на вероятность фактической фиксации внешней транзакции (как и следовало ожидать).
Может ли кто-нибудь объяснить разницу между:
область логической транзакции создается для каждого метода, к которому применяется параметр. Каждая такая логическая область транзакции может определять статус только для отката индивидуально, при этом внешняя область транзакции логически независима от внутренней области транзакции.
а также
Конечно, в случае стандартного поведения PROPAGATION_REQUIRED все эти области будут сопоставлены с одной и той же физической транзакцией.