Junior — Middle
Πώς γίνεται ο έλεγχος για την ολοκλήρωση της συναλλαγής και την αναστροφή της αν χρειάζεται;
sobes.tech AI
Απάντηση από AI
Στην Java, ο έλεγχος ολοκλήρωσης μιας συναλλαγής και η αναίρεσή της πραγματοποιούνται συνήθως μέσω του API διαχείρισης συναλλαγών, για παράδειγμα μέσω JDBC ή frameworks όπως το Spring.
Κύρια προσέγγιση:
- Ξεκινά μια συναλλαγή (π.χ., connection.setAutoCommit(false) στο JDBC).
- Εκτελούνται οι απαραίτητες λειτουργίες στη βάση δεδομένων.
- Αν όλες οι λειτουργίες είναι επιτυχείς, καλείται η commit() για την επιβεβαίωση των αλλαγών.
- Αν προκύψει εξαίρεση ή σφάλμα, καλείται η rollback() για την ακύρωση όλων των αλλαγών που έγιναν στο πλαίσιο της συναλλαγής.
Παράδειγμα με JDBC:
Connection connection = null;
try {
connection = dataSource.getConnection();
connection.setAutoCommit(false); // έναρξη συναλλαγής
// Εκτέλεση λειτουργιών στη βάση
connection.commit(); // επιβεβαίωση συναλλαγής
} catch (SQLException e) {
if (connection != null) {
try {
connection.rollback(); // αναίρεση σε περίπτωση σφάλματος
} catch (SQLException ex) {
ex.printStackTrace();
}
}
e.printStackTrace();
} finally {
if (connection != null) {
try {
connection.setAutoCommit(true);
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Στο πλαίσιο του Spring, μπορεί να χρησιμοποιηθεί η διακόσμηση @Transactional, η οποία διαχειρίζεται αυτόματα τις συναλλαγές καλώντας commit ή rollback ανάλογα με την επιτυχία ή αποτυχία της μεθόδου.