Sobes.tech
Назад к вопросам
Senior
4

Как работает аннотация @Transactional? За счет чего добавляется транзакционная логика?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

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

Как это работает:

  • При запуске метода с @Transactional Spring создает прокси-объект, который оборачивает вызов метода.
  • При вызове метода прокси начинает транзакцию (через менеджер транзакций, например, PlatformTransactionManager).
  • Если метод выполняется успешно, транзакция коммитится.
  • Если возникает исключение, транзакция откатывается.

Транзакционная логика добавляется за счет динамического проксирования (через JDK Proxy или CGLIB), что позволяет внедрять дополнительное поведение вокруг вызова метода без изменения его кода.

Пример:

@Service
public class MyService {

    @Transactional
    public void updateData() {
        // операции с базой данных
    }
}

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