Sobes.tech
Back to questions
Senior
7

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

Companies where asked
Позитив Технолоджис

Answer from AI

sobes.tech AI

Аннотация @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() {
    // бизнес-логика
}