Sobes.tech
Junior — Middle

Ce efect apare atunci când se apelează o metodă annotată cu @Transactional dintr-o altă metodă fără această adnotare?

sobes.tech AI

Răspuns de la AI

Если метод, аннотированный @Transactional, вызывается внутри другого метода без этой аннотации в том же классе напрямую (без использования прокси), то транзакция, как правило, не будет создана.

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

В результате:

  • Транзакция не начнётся.
  • Все операции внутри метода выполнятся без транзакционного контекста.

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