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
}