JdbcTemplate দিয়ে Stored Procedure কল করা

Spring JDBC এবং Stored Procedures - স্প্রিং জেডিবিসি (Spring JDBC) - Java Technologies

307

Spring JDBC-এ JdbcTemplate ব্যবহার করে Stored Procedure কল করা একটি সাধারণ এবং কার্যকর পদ্ধতি। Stored Procedure হল ডেটাবেসের মধ্যে সংরক্ষিত একটি প্রি-কম্পাইল্ড SQL কুয়েরি বা গ্রুপ অফ কুয়েরি, যা বিশেষভাবে ডেটাবেসের কার্যক্রম দক্ষতার সাথে সম্পাদন করার জন্য তৈরি করা হয়। Spring JDBC-এ JdbcTemplate ব্যবহার করে Stored Procedure কল করার জন্য দুটি মূল পদ্ধতি রয়েছে:

  1. CallableStatementCreator এবং CallableStatementCallback ব্যবহার করা।
  2. SimpleJdbcCall ক্লাস ব্যবহার করা (এটি Spring 3.0 এর পর থেকে সুপারিশকৃত পদ্ধতি, যা Stored Procedure কল করতে অনেক সহজ ও পরিষ্কার করে)।

এখানে দুটি পদ্ধতির বিস্তারিত আলোচনা করা হলো।

1. JdbcTemplate দিয়ে Stored Procedure কল করা (CallableStatementCreator & CallableStatementCallback)

এটি Spring JDBC-এর মূল API-তে একে অপরের সাথে কাজ করার জন্য দুটি ক্লাস CallableStatementCreator এবং CallableStatementCallback ব্যবহার করে।

উদাহরণ:

import org.springframework.jdbc.core.CallableStatementCallback;
import org.springframework.jdbc.core.CallableStatementCreator;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.sql.CallableStatement;
import java.sql.SQLException;

public class JdbcTemplateStoredProcedureExample {

    private JdbcTemplate jdbcTemplate;

    public JdbcTemplateStoredProcedureExample(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public void callStoredProcedure() {
        String procedureCall = "{call my_stored_procedure(?, ?)}"; // Stored procedure এর কল

        // Stored procedure কল করার জন্য CallableStatementCreator তৈরি
        CallableStatementCreator csc = conn -> {
            CallableStatement cs = conn.prepareCall(procedureCall);
            cs.setInt(1, 10); // প্রথম প্যারামিটার প্রদান
            cs.setString(2, "example"); // দ্বিতীয় প্যারামিটার প্রদান
            return cs;
        };

        // CallableStatementCallback ব্যবহার করে Stored Procedure কল
        jdbcTemplate.execute(csc, (CallableStatement cs) -> {
            cs.execute(); // Stored Procedure এক্সিকিউট করা
            return null;
        });
    }
}

এখানে:

  • CallableStatementCreator একটি CallableStatement তৈরি করে যেটি Stored Procedure কল করার জন্য ব্যবহৃত হবে।
  • CallableStatementCallback কলব্যাক হ্যান্ডলার যা Stored Procedure এক্সিকিউট করার জন্য ব্যবহৃত হয়।

2. SimpleJdbcCall দিয়ে Stored Procedure কল করা

Spring 3.0 এর পর থেকে SimpleJdbcCall ক্লাসটি Stored Procedure কল করার জন্য একটি সহজ এবং পরিষ্কার পদ্ধতি প্রদান করে। এটি JdbcTemplate থেকে সহজে আলাদা করা যেতে পারে এবং আপনার কোড আরও পরিষ্কার এবং সংক্ষিপ্ত হতে পারে।

উদাহরণ:

import org.springframework.jdbc.core.simple.SimpleJdbcCall;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlReturnResultSet;
import org.springframework.jdbc.support.rowset.SqlRowSet;
import javax.sql.DataSource;
import java.sql.Types;
import java.util.Map;

public class SimpleJdbcCallExample {

    private SimpleJdbcCall simpleJdbcCall;

    public SimpleJdbcCallExample(DataSource dataSource) {
        this.simpleJdbcCall = new SimpleJdbcCall(dataSource)
                                    .withProcedureName("my_stored_procedure") // Stored Procedure নাম
                                    .declareParameters(
                                        new SqlParameter("param1", Types.INTEGER), // প্যারামিটার ১
                                        new SqlParameter("param2", Types.VARCHAR)  // প্যারামিটার ২
                                    );
    }

    public void callStoredProcedure() {
        // প্যারামিটার প্রদান
        Map<String, Object> inParams = Map.of(
            "param1", 10,
            "param2", "example"
        );

        // Stored Procedure কল করা এবং আউটপুট প্রাপ্তি
        Map<String, Object> result = simpleJdbcCall.execute(inParams);

        // আউটপুট দেখানো
        System.out.println("Result: " + result);
    }
}

এখানে:

  • SimpleJdbcCall ক্লাস ব্যবহার করা হচ্ছে, যা Stored Procedure কল করার জন্য একটি সহজ এবং সুসংহত পদ্ধতি।
  • withProcedureName দিয়ে Stored Procedure এর নাম প্রদান করা হয়েছে।
  • declareParameters ব্যবহার করে প্যারামিটারগুলো নির্ধারণ করা হচ্ছে।
  • execute মেথডের মাধ্যমে প্রক্রিয়াটি সম্পাদন করা হচ্ছে, এবং এটি আউটপুট (যদি থাকে) রিটার্ন করে।

Spring JDBC দিয়ে Stored Procedure কল করার সুবিধাসমূহ:

  1. সহজ API: SimpleJdbcCall ব্যবহার করে Stored Procedure কল করা অনেক সহজ এবং কোড সংক্ষিপ্ত করা যায়।
  2. পারফরম্যান্স: Stored Procedure ডেটাবেসের মধ্যে প্রি-কম্পাইলড এবং অপটিমাইজড হওয়ায় এটি অনেক দ্রুত হয় এবং সার্ভারের লোড কমাতে সাহায্য করে।
  3. নিরাপত্তা: SQL ইনজেকশন প্রতিরোধে সাহায্য করে, কারণ Stored Procedure তে প্যারামিটারাইজড কুয়েরি ব্যবহৃত হয়।
  4. ডেটাবেস নিরপেক্ষতা: Stored Procedure কল করে, আপনার কোড ডেটাবেস নিরপেক্ষ থাকে, কারণ সব ডেটাবেস অপারেশন ডেটাবেস স্তরের মধ্যে থাকে।

সংক্ষেপে:

Spring JDBC ব্যবহার করে Stored Procedure কল করা খুবই সহজ এবং প্রভাবশালী। JdbcTemplate এর মাধ্যমে আপনি CallableStatement ব্যবহার করে অথবা SimpleJdbcCall এর মাধ্যমে Stored Procedure কল করতে পারেন। SimpleJdbcCall নতুন এবং সুপারিশকৃত পদ্ধতি, যা কম কোড এবং উচ্চতর পঠনযোগ্যতা প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...