Sobes.tech
Middle+

Քանի՞ գործարք կբացվի, եթե մի դասում երկու մեթոդ կա, որոնցից յուրաքանչյուրը @Transactional propagation REQUIRES_NEW է, և առաջին մեթոդից երկրորդին կանչում ենք:

sobes.tech AI

Պատասխան AI-ից

Երբ օգտագործում եք @Transactional նշումը propagation = REQUIRES_NEW-ով, յուրաքանչյուր մեթոդ իր առանձին գործարքում կկատարվի: Երբ առաջին մեթոդը կանչվում է, բացվում է առաջին գործարքը: Երբ երկրորդ մեթոդը կանչվում է առաջինից, ընթացիկ գործարքը դադարեցվում է, և բացվում է նոր գործարք երկրորդի համար: Երկրորդ մեթոդի ավարտից հետո, այդ գործարքը փակվում է, և առաջինը շարունակվում է:

Ընդհանուր առմամբ, բացվելու են 2 գործարքներ՝ մեկը առաջինի համար և մեկը երկրորդի համար:

Օրինակ՝

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodOne() {
    // գործարք 1
    methodTwo(); // երկրորդ մեթոդի կանչ
}

@Transactional(propagation = Propagation.REQUIRES_NEW)
public void methodTwo() {
    // գործարք 2
}