iBATIS এর মাধ্যমে Stored Procedures কল করা

iBATIS এর সাথে Stored Procedures - আইবাটিস (iBATIS) - Java Technologies

454

iBATIS (বর্তমানে MyBatis) একটি ORM ফ্রেমওয়ার্ক যা ডেটাবেসের সাথে SQL কুয়েরি এবং স্টোরড প্রোসিজারগুলি চালানোর জন্য ব্যবহৃত হয়। স্টোরড প্রোসিজার (Stored Procedure) হল ডেটাবেসে সংরক্ষিত SQL কোডের একটি সেট যা নির্দিষ্ট কাজ সম্পন্ন করতে ব্যবহৃত হয়। iBATIS বা MyBatis এর মাধ্যমে স্টোরড প্রোসিজার কল করার পদ্ধতি সহজ এবং কার্যকর।

MyBatis-এ স্টোরড প্রোসিজার কল করতে, আপনাকে SQL মেপিং ফাইলে call স্টেটমেন্ট ব্যবহার করতে হবে এবং SqlSession বা SqlMapper এর মাধ্যমে জাভা কোড থেকে ওই প্রোসিজার কল করতে হবে।


Step 1: Stored Procedure তৈরি করা

প্রথমে, একটি সাধারণ স্টোরড প্রোসিজার তৈরি করা যাক। ধরুন আমাদের একটি Employee টেবিল আছে, এবং আমরা একটি স্টোরড প্রোসিজার তৈরি করব যা একটি কর্মচারীকে ইনসার্ট করবে এবং ইনসার্ট হওয়া কর্মচারীর আইডি রিটার্ন করবে।

Example Stored Procedure in MySQL:

DELIMITER CREATEPROCEDUREinsertEmployee(INemployeeNameVARCHAR(100),INemployeeDeptVARCHAR(50),OUTemployeeIdINT)BEGININSERTINTOemployee(name,department)VALUES(employeeName,employeeDept);SETemployeeId=LASTINSERTID();--GetthelastinsertedIDEND

CREATE PROCEDURE insertEmployee(
    IN employeeName VARCHAR(100),
    IN employeeDept VARCHAR(50),
    OUT employeeId INT
)
BEGIN
    INSERT INTO employee (name, department)
    VALUES (employeeName, employeeDept);
    
    SET employeeId = LAST_INSERT_ID();  -- Get the last inserted ID
END 

DELIMITER ;

এটি একটি স্টোরড প্রোসিজার যা কর্মচারী নাম এবং বিভাগ ইনপুট হিসেবে নেয় এবং নতুন কর্মচারী তৈরি করে এবং তার ID আউটপুট হিসেবে রিটার্ন করে।


Step 2: MyBatis Configuration (sql-map-config.xml)

আমাদের sql-map-config.xml কনফিগারেশন ফাইল সেটআপ করতে হবে, যাতে ডেটাবেস সংযোগ এবং স্টোরড প্রোসিজার ব্যবহার করা যায়।

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS//DTD SQL Map Config 3.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-3.dtd">
<sqlMapConfig>
    <!-- DataSource Configuration -->
    <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mydatabase"/>
        <property name="username" value="root"/>
        <property name="password" value="password"/>
    </dataSource>

    <!-- Transaction Manager Configuration -->
    <transactionManager type="JDBC"/>

    <!-- Mapper Files -->
    <sqlMap resource="com/example/mapper/EmployeeMapper.xml"/>
</sqlMapConfig>

এখানে:

  • dataSource: MySQL ডেটাবেসের জন্য ড্রাইভার, URL, ইউজারনেম এবং পাসওয়ার্ড কনফিগার করা হয়েছে।
  • transactionManager: JDBC ভিত্তিক ট্রানজেকশন ম্যানেজার ব্যবহার করা হয়েছে।

Step 3: MyBatis Mapper XML (EmployeeMapper.xml)

এখন, আমাদের EmployeeMapper.xml ফাইলে স্টোরড প্রোসিজার কল করার কুয়েরি সংজ্ঞায়িত করতে হবে।

EmployeeMapper.xml Example (for Stored Procedure Call):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//iBATIS//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/sql-map-3.dtd">
<mapper namespace="com.example.mapper.EmployeeMapper">

    <!-- Call the Stored Procedure to insert an employee -->
    <select id="insertEmployee" statementType="CALLABLE" parameterClass="map" resultClass="int">
        {CALL insertEmployee(
            #{employeeName, mode=IN, jdbcType=VARCHAR},
            #{employeeDept, mode=IN, jdbcType=VARCHAR},
            #{employeeId, mode=OUT, jdbcType=INTEGER}
        )}
    </select>

</mapper>

Explanation:

  • statementType="CALLABLE": এটি MyBatis কে জানায় যে এই কুয়েরি একটি স্টোরড প্রোসিজার কল করছে।
  • parameterClass="map": Map প্যারামিটার হিসেবে পাঠানো হবে যাতে স্টোরড প্রোসিজার ইনপুট প্যারামিটার এবং আউটপুট প্যারামিটার মান পাঠানো যায়।
  • #{parameterName, mode=IN/OUT, jdbcType=XXX}: এখানে IN, OUT, এবং jdbcType ব্যবহার করে MyBatis কে স্টোরড প্রোসিজারের প্যারামিটার সম্পর্কে নির্দেশ দেওয়া হয়।

Step 4: Java Code to Call Stored Procedure

এখন, আমরা Java কোডে MyBatis ব্যবহার করে স্টোরড প্রোসিজার কল করব।

EmployeeApp.java Example (Calling the Stored Procedure):

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.util.HashMap;
import java.util.Map;

public class EmployeeApp {

    public static void main(String[] args) {
        // Step 1: Build SqlSessionFactory from the configuration file
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder()
                .build(EmployeeApp.class.getResourceAsStream("/sql-map-config.xml"));

        // Step 2: Open SqlSession
        try (SqlSession session = sessionFactory.openSession()) {

            // Step 3: Prepare parameters for the stored procedure
            Map<String, Object> parameters = new HashMap<>();
            parameters.put("employeeName", "John Doe");
            parameters.put("employeeDept", "IT");

            // Step 4: Execute the stored procedure to insert employee and get employeeId
            session.selectOne("com.example.mapper.EmployeeMapper.insertEmployee", parameters);

            // Step 5: Retrieve the employeeId from the parameters map
            Integer employeeId = (Integer) parameters.get("employeeId");
            System.out.println("Inserted Employee ID: " + employeeId);

            // Commit transaction
            session.commit();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Explanation:

  • parameters.put("employeeName", "John Doe"): প্যারামিটার হিসেবে কর্মচারীর নাম এবং বিভাগ সেট করা হচ্ছে।
  • session.selectOne("com.example.mapper.EmployeeMapper.insertEmployee", parameters): এখানে insertEmployee মেথড কল করা হচ্ছে যা স্টোরড প্রোসিজার কল করবে। প্যারামিটার হিসেবে parameters ম্যাপ ব্যবহার করা হচ্ছে।
  • parameters.get("employeeId"): স্টোরড প্রোসিজার থেকে রিটার্ন হওয়া employeeId আউটপুট প্যারামিটার থেকে নেওয়া হচ্ছে।

Step 5: Gradle বা Maven দিয়ে প্রোজেক্ট বিল্ড এবং রান করা

প্রোজেক্টটি বিল্ড এবং রান করার জন্য, আপনি Gradle বা Maven ব্যবহার করতে পারেন।

For Gradle:

# Build the project
gradle build

# Run the project
gradle run

For Maven:

# Build the project
mvn clean install

# Run the project
mvn exec:java

iBATIS (MyBatis) এর মাধ্যমে Stored Procedures কল করা একটি সহজ প্রক্রিয়া যা ডেটাবেস অপারেশনকে আরও কার্যকরী এবং দক্ষ করে তোলে। আপনি CALLABLE স্টেটমেন্ট ব্যবহার করে SQL কুয়েরি এবং স্টোরড প্রোসিজার প্যারামিটার ম্যানেজ করতে পারেন। এখানে কিছু গুরুত্বপূর্ণ পদ্ধতি:

  1. statementType="CALLABLE": MyBatis-কে জানায় যে এটি একটি স্টোরড প্রোসিজার কল হচ্ছে।
  2. Map প্যারামিটার: ইনপুট এবং আউটপুট প্যারামিটারগুলিকে একটি Map এ পাঠানো হয়।

এটি আপনাকে iBATIS বা MyBatis ব্যবহার করে স্টোরড প্রোসিজার কল করার জন্য একটি শক্তিশালী এবং নমনীয় পদ্ধতি প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...