Назад к вопросам
Альфа-Банк
Senior
4
Как работает аннотация @Transactional? За счет чего добавляется транзакционная логика?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Аннотация @Transactional в Java (например, в Spring Framework) используется для обозначения методов или классов, которые должны выполняться в рамках транзакции.
Как это работает:
- При запуске метода с
@TransactionalSpring создает прокси-объект, который оборачивает вызов метода. - При вызове метода прокси начинает транзакцию (через менеджер транзакций, например,
PlatformTransactionManager). - Если метод выполняется успешно, транзакция коммитится.
- Если возникает исключение, транзакция откатывается.
Транзакционная логика добавляется за счет динамического проксирования (через JDK Proxy или CGLIB), что позволяет внедрять дополнительное поведение вокруг вызова метода без изменения его кода.
Пример:
@Service
public class MyService {
@Transactional
public void updateData() {
// операции с базой данных
}
}
Здесь updateData будет выполняться в транзакции, автоматически управляемой Spring.