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 εγγυάται την ακεραιότητα των δεδομένων, διαχειρίζεται αυτόματα τις συναλλαγές χωρίς να χρειάζεται να γράψετε ρητό κώδικα για την έναρξη, επιβεβαίωση ή ανάκληση.