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
}