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