Sobes.tech
Back to questions
Senior
3

Расскажи про аннотацию @Transactional, как можно транзакцию настроить через неё?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Аннотация @Transactional в Java (обычно в Spring Framework) используется для декларативного управления транзакциями. Она позволяет указать, что метод или класс должен выполняться в рамках транзакции, и задаёт параметры поведения транзакции.

Через @Transactional можно настроить:

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

Пример:

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED, rollbackFor = Exception.class)
public void updateData() {
    // бизнес-логика с транзакцией
}

Это упрощает управление транзакциями без необходимости писать явный код для начала, коммита или отката.