Sobes.tech
Junior — Middle

Πώς λειτουργεί η σημείωση @Transactional και ποια μηχανισμοί χρησιμοποιεί για την εξασφάλιση της συναλλακτικής ακεραιότητας;

sobes.tech AI

Απάντηση από AI

Η σημείωση @Transactional στη Java (συνήθως στο Spring Framework) χρησιμοποιείται για να σηματοδοτήσει μεθόδους ή κλάσεις που πρέπει να εκτελούνται εντός μιας συναλλαγής.

Παρέχει:

  • Αυτόματη έναρξη της συναλλαγής κατά την είσοδο στη μέθοδο.
  • Επιβεβαίωση της συναλλαγής με επιτυχία.
  • Αναίρεση της συναλλαγής σε περίπτωση εξαιρέσεων.

Οι μηχανισμοί που χρησιμοποιούνται είναι:

  • Τα proxies (δυναμικά ή CGLIB) παρεμβαίνουν στις κλήσεις μεθόδων.
  • Ο διαχειριστής συναλλαγών (PlatformTransactionManager) διαχειρίζεται τον κύκλο ζωής της συναλλαγής.

Παράδειγμα:

@Service
public class UserService {
    @Transactional
    public void createUser(User user) {
        userRepository.save(user);
        // αν προκληθεί RuntimeException εδώ, η συναλλαγή θα ανακληθεί
    }
}

Έτσι, το @Transactional εγγυάται την ακεραιότητα των δεδομένων, διαχειρίζεται αυτόματα τις συναλλαγές χωρίς να χρειάζεται να γράψετε ρητό κώδικα για την έναρξη, επιβεβαίωση ή ανάκληση.