Sobes.tech
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() {
    // այս մեթոդը միշտ նոր գործարքում է
}