Transaction Management Example: ডেটাবেসে Multiple Queries একত্রে Execute করা

Java Database Connectivity (JDBC) Examples - জাভা উদাহরন (Java  Examples) - Java Technologies

344

জাভাতে ট্রানজেকশন ম্যানেজমেন্ট ব্যবহৃত হয় যখন একাধিক ডেটাবেস কুয়েরি একত্রে এক্সিকিউট করতে হয় এবং যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশনটি রোলব্যাক করতে হবে। এর ফলে ডেটাবেসে কোনো অসম্পূর্ণ বা ভুল ডেটা প্রবেশ করতে পারে না।

নিচে একটি Transaction Management Example দেওয়া হলো, যেখানে ডেটাবেসে Multiple Queries একত্রে এক্সিকিউট করা হয়েছে এবং commit এবং rollback এর মাধ্যমে ট্রানজেকশন পরিচালনা করা হয়েছে।

উদাহরণ:

import java.sql.*;

public class TransactionManagementExample {
    public static void main(String[] args) {
        // ডেটাবেস কনেকশন সেটআপ
        String url = "jdbc:mysql://localhost:3306/your_database";
        String user = "root";
        String password = "your_password";
        
        Connection connection = null;
        PreparedStatement stmt1 = null;
        PreparedStatement stmt2 = null;

        try {
            // ডেটাবেস কনেকশন তৈরি
            connection = DriverManager.getConnection(url, user, password);
            
            // Auto-commit বন্ধ করা (যতক্ষণ না commit করা হবে, ততক্ষণ পরিবর্তন হবে না)
            connection.setAutoCommit(false);
            
            // প্রথম কুয়েরি
            String query1 = "UPDATE accounts SET balance = balance - 100 WHERE account_id = ?";
            stmt1 = connection.prepareStatement(query1);
            stmt1.setInt(1, 1);  // account_id = 1
            stmt1.executeUpdate();
            
            // দ্বিতীয় কুয়েরি
            String query2 = "UPDATE accounts SET balance = balance + 100 WHERE account_id = ?";
            stmt2 = connection.prepareStatement(query2);
            stmt2.setInt(1, 2);  // account_id = 2
            stmt2.executeUpdate();
            
            // যদি কোনো সমস্যা না হয়, তাহলে ট্রানজেকশন কমিট করা হবে
            connection.commit();
            System.out.println("Transaction Completed Successfully.");
            
        } catch (SQLException e) {
            // যদি কোনো ব্যর্থতা ঘটে, তাহলে রোলব্যাক হবে
            try {
                if (connection != null) {
                    connection.rollback();
                    System.out.println("Transaction Rolled Back due to an error.");
                }
            } catch (SQLException rollbackEx) {
                rollbackEx.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            try {
                // রিসোর্সগুলো বন্ধ করা
                if (stmt1 != null) stmt1.close();
                if (stmt2 != null) stmt2.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

Explanation:

  1. Connection Setup: ডেটাবেসে সংযোগ করার জন্য DriverManager.getConnection() ব্যবহার করা হয়েছে। এখানে your_database, root, এবং your_password আপনার ডেটাবেসের নাম, ব্যবহারকারী নাম এবং পাসওয়ার্ড দ্বারা প্রতিস্থাপন করুন।
  2. Transaction Management:
    • setAutoCommit(false): ডেটাবেসের auto-commit ফিচার বন্ধ করা হয় যাতে যে কোনো কুয়েরি চালানোর পর স্বয়ংক্রিয়ভাবে কমিট না হয়।
    • commit(): যদি সব কুয়েরি সঠিকভাবে এক্সিকিউট হয়, তাহলে connection.commit() কল করা হয়, যা সমস্ত পরিবর্তন ডেটাবেসে স্থায়ী করে।
    • rollback(): যদি কোনো এক্সসেপশন ঘটে, তাহলে connection.rollback() কল করা হয়, যা সমস্ত পরিবর্তন বাতিল করে দেয় এবং ডেটাবেস পূর্বাবস্থায় ফিরে আসে।
  3. Multiple Queries: এখানে দুটি কুয়েরি একযোগে এক্সিকিউট করা হচ্ছে:
    • প্রথম কুয়েরি একটি অ্যাকাউন্টের ব্যালেন্স থেকে ১০০ টাকা বাদ দিচ্ছে।
    • দ্বিতীয় কুয়েরি অন্য একটি অ্যাকাউন্টে ১০০ টাকা যোগ করছে।
  4. Error Handling: যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশন রোলব্যাক করা হয় এবং কোন পরিবর্তন ডেটাবেসে সঞ্চিত হয় না।
  5. Resources Cleanup: শেষপর্যন্ত, ডেটাবেস সংযোগ এবং অন্যান্য রিসোর্সগুলো বন্ধ করা হয় যাতে রিসোর্স লিক না ঘটে।

Output Example:

  • যদি সব কুয়েরি সফলভাবে সম্পন্ন হয়, তাহলে আউটপুট হবে:

    Transaction Completed Successfully.
    
  • যদি কোনো কুয়েরি ব্যর্থ হয়, তাহলে আউটপুট হবে:

    Transaction Rolled Back due to an error.
    

Notes:

  • আপনি যদি MySQL ব্যবহার করেন, ড্রাইভার এবং ডেটাবেস URL ঠিকমতো কনফিগার করুন।
  • যদি কোনো কুয়েরি ব্যর্থ হয়, যেমন অ্যাকাউন্টে যথেষ্ট টাকা না থাকা, তাহলে পুরো ট্রানজেকশন রোলব্যাক হবে।
Content added By
Promotion

Are you sure to start over?

Loading...