Sobes.tech
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 ανάλογα με την επιτυχία ή αποτυχία της μεθόδου.