Ինչպե՞ս է վարվում համակարգը, եթե տրանզակցիոն նշված մեթոդի ներսում կանչվում է ևս մեկ տրանզակցիոն նշված մեթոդ։
sobes.tech AI
Պատասխան AI-ից
Java-յում, երբ օգտագործվում են գործարքներ (օրինակ, @Transactional նշանով Spring-ում), եթե ներսում կանչվի մյուս նշված որպես գործարքային մեթոդ, ապա վարքագիծը կախված է պրոքսի տեսակից և գործարքների կարգավորումներից:
Անհատական, եթե կանչը կատարվում է նույն դասի ներսում (մեթոդի ներքին կանչ), պրոքսին չի բռնում այդ կանչը, և նոր գործարք չի ստեղծվում — օգտագործվում է ընթացիկ գործարքը (եթե կա):
Եթե կանչը կատարվում է դուրս (պրոքսի միջոցով), ապա՝
REQUIREDpropagation տեսակի դեպքում (նույնպես որպես ստանդարտ), ներսում գործարք չի ստեղծվում, օգտագործվում է գոյություն ունեցողը:REQUIRES_NEWpropagation-ով, ստեղծվում է նոր գործարք, ժամանակավորապես դադարեցնելով ընթացիկը:
Այսպիսով, երբ կանչվում է գործարքային մեթոդը մյուս գործարքային մեթոդից նույն դասում, սովորաբար օգտագործվում է նույն գործարքը, և ներքին նշումը չի ստեղծում նոր գործարք:
Եթե ցանկանում եք, որ ներքին մեթոդը աշխատի առանձին գործարքում, կանչը պետք է կատարվի պրոքսի միջոցով (օրինակ, այլ բինով կամ ինքն-միջնորդությամբ):