Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Spring: transaction, propagation, required

Что такое propagation у транзакций и какие типы propagation существуют?

Вопрос проверяет понимание вложенных транзакций и поведения системы при вызове транзакционных методов друг из друга.

Короткий ответ

Propagation определяет, как метод с @Transactional ведёт себя относительно уже существующей транзакции. Spring поддерживает несколько типов propagation. Самый популярный — REQUIRED. Есть варианты для создания новой транзакции, запрета транзакций и обязательного наличия транзакции. Выбор propagation влияет на изоляцию и rollback.

Длинный ответ

Propagation отвечает за то, как транзакции «вкладываются» друг в друга.

Определение

Transaction propagation — это правило, определяющее, как метод с транзакцией взаимодействует с уже существующей транзакцией.

Основные типы propagation

Перед перечислением важно понимать, что поведение зависит от наличия активной транзакции.

1. REQUIRED

  1. Использует существующую транзакцию

  2. Создаёт новую, если её нет

  3. Значение по умолчанию

2. REQUIRES_NEW

  1. Приостанавливает текущую транзакцию

  2. Создаёт новую транзакцию

  3. Всегда выполняется в своей транзакции

3. SUPPORTS

  1. Работает в транзакции, если она есть

  2. Иначе выполняется без транзакции

4. MANDATORY

  1. Требует существующую транзакцию

  2. Без неё выбрасывает исключение

5. NOT_SUPPORTED

  1. Приостанавливает текущую транзакцию

  2. Выполняется без транзакции

6. NEVER

  1. Запрещает выполнение в транзакции

  2. При наличии транзакции — ошибка

7. NESTED

  1. Создаёт вложенную транзакцию

  2. Работает через savepoint

  3. Поддерживается не всеми менеджерами

Вывод

Propagation определяет поведение транзакций при вложенных вызовах. Неправильный выбор может привести к неожиданным rollback’ам.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • Spring

    Spring

Ключевые слова

#transaction

#propagation

#required

Подпишись на Java Developer в телеграм