Skip to content

13.3 Transaction Management & ACID

⚙️ Code: Bank Fund Transfer with Rollback

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class TransactionDemo {
    public static void main(String[] args) {
        String url = "jdbc:postgresql://localhost:5432/bank_db";
        Connection conn = null;

        try {
            conn = DriverManager.getConnection(url, "postgres", "secret");
            
            // 1. ऑटो-कमिट बंद करें (Manual Transaction Mode)
            conn.setAutoCommit(false);

            // स्टेप 1: खाता A से ₹5000 काटना
            try (PreparedStatement debit = conn.prepareStatement("UPDATE accounts SET balance = balance - 5000 WHERE acc_no = 'ACC-A'")) {
                debit.executeUpdate();
            }

            // स्टेप 2: खाता B में ₹5000 जोड़ना
            try (PreparedStatement credit = conn.prepareStatement("UPDATE accounts SET balance = balance + 5000 WHERE acc_no = 'ACC-B'")) {
                credit.executeUpdate();
            }

            // 2. दोनों स्टेप्स सफल होने पर ही कमिट करें
            conn.commit();
            System.out.println("✅ फंड ट्रांसफर सफल और डेटाबेस में कमिट हुआ!");

        } catch (SQLException ex) {
            System.out.println("❌ एरर आया! सभी बदलाव वापस (Rollback) किए जा रहे हैं...");
            if (conn != null) {
                try {
                    conn.rollback(); // किसी भी विफलता पर पैसे वापस
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        } finally {
            if (conn != null) {
                try { conn.close(); } catch (SQLException e) { e.printStackTrace(); }
            }
        }
    }
}

🧭 Navigation

Last updated on