Əməliyyatlı olaraq işarələnmiş metod daxilində, eyni zamanda əməliyyatlı anotasiya ilə işarələnmiş başqa bir metod çağırılırsa, sistem necə davranır?
sobes.tech Süni İntellekt
AI-dan cavab
Java-da, məsələn, Spring-də @Transactional anotatsiyası ilə tranzaksiyalar istifadə edilərkən, bir tranzaksiyonal metod daxilində başqa bir tranzaksiyonal olaraq işarələnmiş metod çağırıldıqda, davranış proxy növü və tranzaksiya parametrlərinə bağlıdır.
Əsasən, əgər çağırış eyni sinif daxilində baş verirsə (daxili metod çağırışı), proxy bu çağırışı tutmur və yeni tranzaksiya yaradılmır — mövcud tranzaksiya (əgər varsa) istifadə olunur.
Əgər çağırış xaricdən (proxy vasitəsilə) baş verirsə:
REQUIREDpropagation növü ilə (standart), daxili tranzaksiya yaradılmır, mövcud tranzaksiya istifadə olunur.REQUIRES_NEWpropagation ilə yeni tranzaksiya yaradılır və mövcud tranzaksiya dayandırılır.
Beləliklə, eyni sinif daxilində başqa bir tranzaksiyonal metoddan çağırış edildikdə, adətən, eyni tranzaksiya istifadə olunur və iç-içə anotasiya yeni tranzaksiya yaratmır.
Əgər daxili metodun ayrı tranzaksiyada işləməsini istəyirsinizsə, çağırış proxy vasitəsilə olmalıdır (məsələn, başqa bir bean və ya öz-özünə injeksiya ilə).