Junior — Middle
Կարող եք բացատրել, թե ինչ է ենթադրվում փոխանցման մակարդակներում գործառնությունների կառավարումում?
sobes.tech AI
Պատասխան AI-ից
Գործառնությունների կառավարման մեջ տարածման մակարդակները որոշում են, թե ինչպես է գործարքը վարվում այն ժամանակ, երբ կանչվում են մեթոդներ, որոնք նույնպես կարող են լինել գործարքային: Սա կարևոր է հասկանալու համար, արդյոք մեթոդը օգտագործելու է գոյություն ունեցող գործարքը, ստեղծելու նոր կամ աշխատելու առանց գործարքի:
Spring (Java) հիմնական տարածման մակարդակները:
- REQUIRED (նույնպես՝ ըստ նախնական կարգի): եթե կա ընթացիկ գործարք, մեթոդը միանում է նրան, հակառակ դեպքում ստեղծվում է նոր:
- REQUIRES_NEW: միշտ ստեղծում է նոր գործարք, ընթացիկը (եթե կա) դադարեցվում է:
- SUPPORTS: եթե կա գործարք, մեթոդը աշխատում է դրա մեջ, հակառակ դեպքում՝ առանց գործարքի:
- NOT_SUPPORTED: մեթոդը միշտ աշխատում է առանց գործարքի, ընթացիկը դադարեցվում է:
- MANDATORY: մեթոդը պետք է աշխատի գոյություն ունեցող գործարքում, հակառակ դեպքում՝ արտամատչելիություն:
- NEVER: մեթոդը չի կարող աշխատել գործարքում, հակառակ դեպքում՝ արտամատչելիություն:
- NESTED: եթե կա գործարք, ստեղծվում է ներքին (savepoint) գործարք, հակառակ դեպքում՝ նոր:
Օրինակ:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void saveData() {
// այս մեթոդը միշտ նոր գործարքում է
}