Spring middle
Когда нужен REQUIRES_NEW?
Ответ
Когда нужна НЕЗАВИСИМАЯ транзакция, которая сохранится даже при rollback основной: текущая транзакция приостанавливается, открывается новая с отдельным соединением и коммитится сама по себе. Примеры: запись аудит-лога (должна остаться при ошибке), отправка уведомления, счётчик попыток.
Разбор: REQUIRES_NEW приостанавливает текущую транзакцию и открывает полностью независимую с отдельным соединением, которая коммитится сама по себе и переживёт rollback внешней — отсюда аудит-логи и счётчики попыток. Дистракторы путают его с другими механизмами: частичный откат до savepoint — это NESTED, переиспользование транзакции — это REQUIRED, а независимая транзакция, наоборот, не делится своими незакоммиченными данными с внешней.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.