COMMIT এবং ROLLBACK ব্যবহার করা

Transactions এবং Batch Processing - জাভা মাইএসকিউএল (Java MySQL) - Database Tutorials

269

COMMIT এবং ROLLBACK হল দুটি গুরুত্বপূর্ণ ট্রানজেকশন কমান্ড যা ডেটাবেস অপারেশনগুলোর সামঞ্জস্যপূর্ণতা নিশ্চিত করতে ব্যবহৃত হয়। যখন আপনি একাধিক SQL কুয়েরি একে অপরের উপর নির্ভরশীল ভাবে চালান, তখন COMMIT এবং ROLLBACK আপনার পরিবর্তনগুলো নিরাপদ ও সঠিকভাবে পরিচালনা করতে সাহায্য করে।

Java-তে MySQL এর সাথে কাজ করার সময় COMMIT এবং ROLLBACK ব্যবহারের মাধ্যমে আপনি ট্রানজেকশন ম্যানেজমেন্ট করতে পারেন।


১. COMMIT কী?

COMMIT একটি SQL কমান্ড যা আপনার দ্বারা করা পরিবর্তনগুলো ডেটাবেসে স্থায়ী করে। যখন একটি ট্রানজেকশন সফলভাবে সম্পন্ন হয় এবং আপনি নিশ্চিত হন যে সব কিছু সঠিকভাবে হয়েছে, তখন COMMIT কমান্ড ব্যবহার করা হয়।

যখন আপনি COMMIT ব্যবহার করেন, তখন আপনার সবকটি পরিবর্তন (INSERT, UPDATE, DELETE) ডেটাবেসে স্থায়ী হয়ে যায় এবং আর কোনো সংশোধন করা সম্ভব হয় না।


২. ROLLBACK কী?

ROLLBACK কমান্ডটি ব্যবহার করা হয় যখন আপনি একটি ট্রানজেকশন বাতিল করতে চান। অর্থাৎ, যদি ট্রানজেকশনের মধ্যে কোনো ত্রুটি বা সমস্যা ঘটে, তবে ROLLBACK ব্যবহার করে আপনি সবকিছু পূর্বাবস্থায় ফিরিয়ে আনতে পারেন।

ROLLEDBACK এর মাধ্যমে আপনি করা সব পরিবর্তনকে বাতিল করে, ডেটাবেসকে পূর্বের অবস্থায় ফেরত নিয়ে যেতে পারবেন।


৩. COMMIT এবং ROLLBACK এর ব্যবহার

Java দিয়ে MySQL ডেটাবেসে COMMIT এবং ROLLBACK ব্যবহারের জন্য Connection অবজেক্টে ট্রানজেকশন ম্যানেজমেন্ট চালু করতে হয়। ট্রানজেকশন শুরু করার জন্য setAutoCommit(false) ব্যবহার করা হয় এবং তখন আপনি একাধিক SQL কুয়েরি একে অপরের উপর নির্ভর করে একে একে এক্সিকিউট করতে পারেন।

উদাহরণ: COMMIT এবং ROLLBACK ব্যবহার

এখানে একটি উদাহরণ দেওয়া হচ্ছে যেখানে আমরা দুটি ইনসার্ট অপারেশন চালাতে যাচ্ছি এবং যদি কোনো ত্রুটি ঘটে, তবে ROLLBACK করে সবকিছু বাতিল করা হবে।

import java.sql.*;

public class CommitRollbackExample {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mydatabase"; // ডেটাবেস URL
        String user = "root"; // MySQL ইউজারনেম
        String password = "password"; // MySQL পাসওয়ার্ড

        // ডেটাবেস সংযোগ স্থাপন
        try (Connection conn = DriverManager.getConnection(url, user, password)) {
            // ডেটাবেসে স্বয়ংক্রিয় কমিট বন্ধ করা
            conn.setAutoCommit(false);

            // প্রথম SQL কুয়েরি (INSERT)
            String sql1 = "INSERT INTO employees (id, name, department) VALUES (1, 'John Doe', 'HR')";
            try (Statement stmt = conn.createStatement()) {
                stmt.executeUpdate(sql1);
            }

            // দ্বিতীয় SQL কুয়েরি (INSERT)
            String sql2 = "INSERT INTO employees (id, name, department) VALUES (2, 'Jane Smith', 'IT')";
            try (Statement stmt = conn.createStatement()) {
                stmt.executeUpdate(sql2);
            }

            // যদি সব কিছু সঠিকভাবে হয়, তাহলে COMMIT করা হবে
            conn.commit();
            System.out.println("Transaction committed successfully.");

        } catch (SQLException e) {
            // যদি কোনো ত্রুটি ঘটে, তাহলে ROLLBACK করা হবে
            try (Connection conn = DriverManager.getConnection(url, user, password)) {
                conn.rollback();
                System.out.println("Transaction rolled back due to error: " + e.getMessage());
            } catch (SQLException rollbackException) {
                System.out.println("Rollback failed: " + rollbackException.getMessage());
            }
        }
    }
}

৪. কোড ব্যাখ্যা

  1. conn.setAutoCommit(false): ডিফল্টভাবে, MySQL ডেটাবেসে প্রতিটি SQL কুয়েরি এক্সিকিউট করার পর কমিট হয়ে যায় (অথবা অটোকমিট)। কিন্তু যখন আপনি ট্রানজেকশন ম্যানেজমেন্ট করতে চান, তখন autoCommit অফ করতে হয়। এভাবে আপনি একটি ট্রানজেকশন হিসেবে একাধিক কুয়েরি এক্সিকিউট করতে পারেন এবং সেগুলোর উপর একসাথে COMMIT বা ROLLBACK প্রয়োগ করতে পারেন।
  2. conn.commit(): সমস্ত কুয়েরি সফলভাবে এক্সিকিউট হলে COMMIT ব্যবহার করা হয়, যার মাধ্যমে আপনি সব পরিবর্তন ডেটাবেসে স্থায়ী করতে পারেন।
  3. conn.rollback(): যদি কোনো ত্রুটি ঘটে (যেমন SQL কুয়েরি এক্সিকিউট হওয়ার সময়), তাহলে আপনি ROLLBACK ব্যবহার করতে পারেন। এর মাধ্যমে, যেকোনো পরিবর্তন (INSERT, UPDATE, DELETE) বাতিল হয়ে যাবে এবং ডেটাবেস পূর্বের অবস্থায় ফিরে যাবে।

৫. COMMIT এবং ROLLBACK ব্যবহারের পরিস্থিতি

  1. COMMIT ব্যবহার করুন:
    • যখন আপনি নিশ্চিত হন যে সমস্ত অপারেশন সঠিকভাবে সম্পন্ন হয়েছে এবং কোনো ত্রুটি ঘটেনি।
    • যখন আপনি ডেটাবেসে করা সমস্ত পরিবর্তন স্থায়ী করতে চান।
  2. ROLLBACK ব্যবহার করুন:
    • যখন আপনি কোনো অপারেশন চলাকালীন ত্রুটি দেখতে পান এবং আপনি চাইছেন যে, সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আসুক।
    • যখন আপনি একাধিক SQL কুয়েরি এক্সিকিউট করেন এবং একটি কুয়েরি ব্যর্থ হলে অন্যগুলোও বাতিল করতে চান।

৬. COMMIT এবং ROLLBACK এর গুরুত্বপূর্ণ পয়েন্ট

  • AutoCommit: Java-তে ডিফল্টভাবে autoCommit মোড চালু থাকে, অর্থাৎ প্রতি কুয়েরির পর স্বয়ংক্রিয়ভাবে COMMIT হয়ে যায়। তবে setAutoCommit(false) ব্যবহার করে আপনি একে বন্ধ করতে পারেন এবং ম্যানুয়ালি COMMIT বা ROLLBACK পরিচালনা করতে পারেন।
  • Atomicity: COMMIT এবং ROLLBACK ট্রানজেকশন ম্যানেজমেন্টের মূল ভিত্তি। একাধিক কুয়েরি একসাথে সফল হলে COMMIT হবে এবং যদি কোনো ত্রুটি ঘটে তবে সমস্ত কুয়েরি বাতিল হবে (ROLLBACK)।
  • Transaction Isolation Levels: COMMIT এবং ROLLBACK ব্যবহারের সময় transaction isolation level (যেমন READ_COMMITTED, SERIALIZABLE) নির্ধারণ করে যে, একাধিক ট্রানজেকশন একে অপরকে কিভাবে প্রভাবিত করতে পারে।

সারাংশ

Java দিয়ে MySQL ডেটাবেসে COMMIT এবং ROLLBACK ব্যবহারের মাধ্যমে আপনি ট্রানজেকশন ম্যানেজমেন্ট করতে পারেন, যা ডেটাবেসের মধ্যে একাধিক নির্ভরশীল অপারেশনকে নিরাপদ ও কার্যকরীভাবে পরিচালনা করতে সাহায্য করে। COMMIT সমস্ত পরিবর্তন স্থায়ী করে এবং ROLLBACK কোনো ত্রুটি হলে সব পরিবর্তন বাতিল করে। এভাবে ট্রানজেকশনগুলোকে নিরাপদভাবে পরিচালনা করা সম্ভব হয়।

Content added By
Promotion

Are you sure to start over?

Loading...