Spring имеет 3 типичных распространения вложенных транзакций: REQUIRED
, NEW
и NESTED
.Типы уровня изоляции всегда описываются в терминах параллельных транзакций.Но как насчет вложенного случая?Какова видимость по умолчанию изнутри наружу и наоборот и как влияет установка уровня изоляции на обоих?
Возможно, есть какое-то эмпирическое правило, например, «внешняя транзакция всегда видит изменения изнутри вне зависимости от типов изоляции или распространения» или «внутренняя может видеть изменения внешнего объекта только тогда, когда она установлена как read_uncommited.Или его установить, как требуется, и т.д ..?
РЕДАКТИРОВАТЬ: я не говорю о реальных SQL-запросов, но контекст постоянства.Я имею в виду, если я создаю ресурс и читаю его в другой части модели вложенных транзакций, увижу ли я это изменение независимо от того, было ли оно действительно сохранено?Хорошим примером является транзакционный рабочий процесс, который выполняет транзакционные методы, использующие repository.save, repository.find ... и т. Д.