Java Technologies উদাহরণ সহ Advanced JDBC Features গাইড ও নোট

286

JDBC (Java Database Connectivity) হল একটি Java API যা ডেটাবেসের সাথে যোগাযোগ এবং ডেটাবেস অপারেশন সম্পাদন করার জন্য ব্যবহৃত হয়। Advanced JDBC Features আপনাকে আরও কার্যকরী, নিরাপদ এবং স্কেলেবল ডেটাবেস অ্যাপ্লিকেশন তৈরি করতে সহায়তা করে। এই ফিচারগুলো ডেটাবেসের অপারেশনগুলোকে আরও উন্নত করে তোলে, যেমন বড় আকারের ডেটা পরিচালনা, পারফরম্যান্স অপটিমাইজেশন, এবং ডেটাবেস সংযোগের উন্নত ব্যবস্থাপনা।

এই গাইডে, আমরা Advanced JDBC Features এর মধ্যে কিছু গুরুত্বপূর্ণ বৈশিষ্ট্য এবং তাদের উদাহরণ নিয়ে আলোচনা করব।


1. Batch Processing

Batch Processing হল একটি প্রক্রিয়া যেখানে একাধিক SQL অপারেশন একসাথে এক্সিকিউট করা হয়, যাতে ডেটাবেসে একাধিক স্টেটমেন্ট ইনসার্ট, আপডেট বা ডিলিট করা যায়। এটি পারফরম্যান্সে উন্নতি আনে, কারণ ডেটাবেসে একাধিক কমান্ড পাঠানোর পরিবর্তে একটি কমান্ড পাঠানো হয়।

Batch Processing এর উদাহরণ:

import java.sql.*;

public class BatchProcessingExample {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement statement = null;

        try {
            // ১. ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

            // ২. Autocommit বন্ধ করা
            connection.setAutoCommit(false);

            // ৩. Batch statement তৈরি করা
            String query = "INSERT INTO users (name, email) VALUES (?, ?)";
            statement = connection.prepareStatement(query);

            // ৪. ব্যাচে স্টেটমেন্ট যোগ করা
            statement.setString(1, "John Doe");
            statement.setString(2, "john@example.com");
            statement.addBatch();

            statement.setString(1, "Jane Doe");
            statement.setString(2, "jane@example.com");
            statement.addBatch();

            // ৫. ব্যাচ এক্সিকিউট করা
            int[] results = statement.executeBatch();
            System.out.println("Batch executed, rows affected: " + results.length);

            // ৬. commit করা
            connection.commit();

        } catch (SQLException e) {
            // ৭. Rollback করা যদি কোনো ত্রুটি ঘটে
            try {
                if (connection != null) {
                    connection.rollback();
                    System.out.println("Transaction rolled back.");
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        } finally {
            try {
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

কোড ব্যাখ্যা:

  1. Batch Statement: addBatch() মেথড ব্যবহার করে একাধিক SQL স্টেটমেন্ট ব্যাচে যোগ করা হয়।
  2. executeBatch(): executeBatch() মেথডের মাধ্যমে সমস্ত ব্যাচ একসাথে ডেটাবেসে প্রেরণ করা হয়।
  3. Autocommit: ট্রানজেকশন শুরু করার আগে setAutoCommit(false) ব্যবহার করে autocommit মোড বন্ধ করা হয়, যাতে একাধিক স্টেটমেন্ট একসাথে commit করা যায়।

2. CallableStatement

CallableStatement হল JDBC এর একটি ইন্টারফেস যা stored procedures এবং functions এক্সিকিউট করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসে আগে থেকেই সংজ্ঞায়িত stored procedures বা functions চালাতে পারে, যা ডেটাবেসের মধ্যে লজিক সঞ্চালন করতে ব্যবহৃত হয়।

CallableStatement এর উদাহরণ:

import java.sql.*;

public class CallableStatementExample {
    public static void main(String[] args) {
        Connection connection = null;
        CallableStatement callableStatement = null;

        try {
            // ১. ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

            // ২. Stored procedure কল করা
            String storedProcedure = "{call getUserById(?)}"; // getUserById নামে একটি stored procedure কল
            callableStatement = connection.prepareCall(storedProcedure);

            // ৩. প্যারামিটার সেট করা
            callableStatement.setInt(1, 1);  // id প্যারামিটার সেট করা

            // ৪. রেজাল্ট সেট রিট্রাইভ করা
            ResultSet resultSet = callableStatement.executeQuery();

            while (resultSet.next()) {
                System.out.println("ID: " + resultSet.getInt("id"));
                System.out.println("Name: " + resultSet.getString("name"));
                System.out.println("Email: " + resultSet.getString("email"));
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (callableStatement != null) callableStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

কোড ব্যাখ্যা:

  1. Stored Procedure Call: prepareCall() মেথড ব্যবহার করে stored procedure কল করা হয়।
  2. setInt(): প্যারামিটার হিসেবে id পাঠানো হয়।
  3. executeQuery(): stored procedure এর রেজাল্ট ResultSet এর মাধ্যমে রিট্রাইভ করা হয়।

3. Transaction Management (Commit, Rollback)

জেডিবিসিতে ট্রানজেকশন ম্যানেজমেন্ট গুরুত্বপূর্ণ, বিশেষ করে যখন একাধিক SQL অপারেশন একসাথে করা হয়। commit() এবং rollback() মেথড ব্যবহার করে আপনি ট্রানজেকশন সম্পন্ন বা রিভার্স করতে পারেন।

Transaction Management এর উদাহরণ:

import java.sql.*;

public class TransactionManagementExample {
    public static void main(String[] args) {
        Connection connection = null;
        Statement statement = null;

        try {
            // ১. ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

            // ২. Autocommit বন্ধ করা
            connection.setAutoCommit(false);

            // ৩. SQL স্টেটমেন্ট তৈরি করা
            statement = connection.createStatement();

            // ৪. SQL কুইরি চালানো
            statement.executeUpdate("UPDATE users SET email = 'newemail@example.com' WHERE id = 1");
            statement.executeUpdate("DELETE FROM users WHERE id = 2");

            // ৫. commit করা
            connection.commit();
            System.out.println("Transaction committed.");

        } catch (SQLException e) {
            // ৬. rollback করা
            try {
                if (connection != null) {
                    connection.rollback();
                    System.out.println("Transaction rolled back due to error.");
                }
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        } finally {
            try {
                if (statement != null) statement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

কোড ব্যাখ্যা:

  1. setAutoCommit(false): ট্রানজেকশন পরিচালনা করতে autocommit বন্ধ করা হয়েছে।
  2. commit(): সমস্ত SQL অপারেশন সফল হলে commit() ব্যবহার করে পরিবর্তন ডেটাবেসে স্থায়ী করা হয়েছে।
  3. rollback(): যদি কোনো ত্রুটি ঘটে, তবে rollback() মেথড ব্যবহার করে সমস্ত পরিবর্তন বাতিল করা হয়েছে।

4. LOB Handling (BLOB এবং CLOB)

LOB (Large Object) ডেটা টাইপ ডেটাবেসে বৃহৎ ডেটা (যেমন, ছবি, অডিও, ভিডিও, বা বড় টেক্সট) সংরক্ষণের জন্য ব্যবহৃত হয়। JDBC ব্যবহার করে BLOB (Binary Large Object) এবং CLOB (Character Large Object) ডেটা টাইপ ম্যানেজ করা যেতে পারে।

BLOB (Binary Large Object) Handling এর উদাহরণ:

import java.io.*;
import java.sql.*;

public class BlobHandlingExample {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // ১. ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

            // ২. BLOB ফিল্ডে ডেটা ইনসার্ট করা
            String query = "INSERT INTO images (image_data) VALUES (?)";
            preparedStatement = connection.prepareStatement(query);

            // ৩. ইনপুট স্ট্রিম থেকে BLOB ডেটা সেট করা
            FileInputStream inputStream = new FileInputStream(new File("path/to/image.jpg"));
            preparedStatement.setBinaryStream(1, inputStream);

            // ৪. SQL এক্সিকিউট করা
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("Rows affected: " + rowsAffected);

        } catch (SQLException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

CLOB (Character Large Object) Handling এর উদাহরণ:

import java.io.*;
import java.sql.*;

public class ClobHandlingExample {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;

        try {
            // ১. ডেটাবেসে সংযোগ স্থাপন
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

            // ২. CLOB ফিল্ডে ডেটা ইনসার্ট করা
            String query = "INSERT INTO documents (document_content) VALUES (?)";
            preparedStatement = connection.prepareStatement(query);

            // ৩. CLOB ডেটা সেট করা
            FileReader reader = new FileReader("path/to/textfile.txt");
            preparedStatement.setCharacterStream(1, reader);

            // ৪. SQL এক্সিকিউট করা
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("Rows affected: " + rowsAffected);

        } catch (SQLException | FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (preparedStatement != null) preparedStatement.close();
                if (connection != null) connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

সারাংশ

Advanced JDBC Features আপনাকে JDBC ব্যবহার করে ডেটাবেসের সাথে আরও কার্যকরী এবং নিরাপদভাবে কাজ করার সুযোগ দেয়। Batch Processing এর মাধ্যমে একাধিক SQL অপারেশন একত্রে এক্সিকিউট করা যায়, CallableStatement ব্যবহার করে stored procedures এবং functions এক্সিকিউট করা যায়, এবং LOB Handling (BLOB এবং CLOB) আপনাকে বড় ডেটা (যেমন ছবি, টেক্সট, বা অন্যান্য বড় ফাইল) ডেটাবেসে সঞ্চয় এবং পুনরুদ্ধার করার সুবিধা দেয়।

এই ফিচারগুলো ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্কেলেবিলিটি আরও উন্নত করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...