Sobes.tech
Junior — Middle
82

Spring-де @Transactional аннотациясымен белгіленген әдісті Propagation.NEVER параметрімен шақырғанда қандай салдарлар болады?

Сұралған компаниялар
СБЕРСБЕР

AI-дан жауап

sobes.tech AI

Spring-те @Transactional аннотациясымен propagation = Propagation.NEVER параметрімен әдісті шақырсаңыз, Spring ағымдағы орындау ағынында белсенді транзакцияның жоқтығын тексереді. Егер транзакция бұрыннан бар болса, IllegalTransactionStateException қателігі шығарылады.

Бұл дегеніміз, Propagation.NEVER бар әдіс транзакция шеңберінде орындалуға тыйым салған. Мұндай тәсіл әдіс транзакциялық контексттен тыс орындалуы керек болғанда пайдаланылады, мысалы, транзакцияға кірмейтін операциялар немесе транзакцияларды қолдамайтын сыртқы қызметтерді шақыру үшін.

Мысал:

@Transactional(propagation = Propagation.NEVER)
public void nonTransactionalMethod() {
    // транзакция ішінде орындалмауы тиіс код
}

Егер бұл әдісті транзакция ішінде болған басқа әдістен шақырсаңыз, қате пайда болады.