Что даёт аннотация @Transactional и какие у неё атрибуты?

Аннотация @Transactional в Java используется для управления транзакциями на уровне методов или классов.

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

Что ответить на собеседовании

Аннотация @Transactional в Java используется для управления транзакциями на уровне методов или классов. Она гарантирует, что все операции внутри транзакции будут выполнены атомарно: либо все успешно, либо при ошибке произойдёт откат.

Подробный разбор

Ответ с пояснениями

Аннотация @Transactional в Java используется для управления транзакциями на уровне методов или классов. Она гарантирует, что все операции внутри транзакции будут выполнены атомарно: либо все успешно, либо при ошибке произойдёт откат.

Основные атрибуты @Transactional:

  • propagation — определяет поведение транзакции при вызове из другого транзакционного контекста (например, REQUIRED, REQUIRES_NEW).
  • isolation — уровень изоляции транзакции (READ_COMMITTED, SERIALIZABLE и др.), влияет на видимость данных.
  • timeout — время ожидания завершения транзакции, после которого она будет прервана.
  • readOnly — указывает, что транзакция только для чтения, что может оптимизировать работу с БД.
  • rollbackFor / noRollbackFor — классы исключений, при которых транзакция будет откатываться или нет.

Пример:

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, timeout = 30, readOnly = false)
public void updateData() {
    // бизнес-логика
}

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее