Ako sa správa systém, ak sa vnútri transakčnej metódy volá iná metóda, ktorá je tiež označená transakčnou anotáciou?
sobes.tech AI
Odpoveď od AI
У Јави, када користите трансакције (на пример, са анотацијом @Transactional у Spring-у), понашање када се позове друга метода означена као трансакциона зависи од типа проксија и подешавања трансакција.
По подразумеваној вредности, ако позив долази унутар исте класе (интерни позив методе), прокси не пресреће тај позив и не креира се нова трансакција — користи се тренутна трансакција (ако постоји).
Ако позив долази споља (преко проксија), онда:
- Са propagation типа
REQUIRED(по подразумеваној вредности), не креира се унутрашња трансакција, користи се постојећа. - Са propagation
REQUIRES_NEW, креира се нова трансакција, суспендовајући тренутну.
Тако, при позиву трансакционе методе из друге трансакционе методе у истој класи, обично се користи иста трансакција, а унутрашња анотација не креира нову трансакцију.
Ако желите да се унутрашња метода извршава у посебној трансакцији, позив мора ићи преко проксија (нпр. преко другог бина или преко self-injection).