SQL এবং Java Objects এর মধ্যে Mapping

SQL Statements এবং XML Mapping - আইবাটিস (iBATIS) - Java Technologies

410

iBATIS (বর্তমানে MyBatis নামে পরিচিত) হল একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা SQL এবং Java Objects এর মধ্যে ম্যাপিং (mapping) সহজে করে। এটি Hibernate-এর মতো সম্পূর্ণ ORM ফ্রেমওয়ার্ক না হলেও, এটি SQL কুয়েরি পরিচালনার জন্য একটি সরল এবং কার্যকরী পদ্ধতি প্রদান করে। iBATIS-এ, আপনি SQL কোয়েরি ব্যবহার করেন এবং Java objects এর সাথে তাদের ম্যাপিং করতে পারেন, যার ফলে ডেটাবেস থেকে আসা ফলাফলগুলোকে Java objects-এ রূপান্তরিত করা সহজ হয়।

iBATIS/ MyBatis এ SQL এবং Java Objects এর মধ্যে ম্যাপিং করার জন্য একটি নির্দিষ্ট পদ্ধতি রয়েছে, যার মাধ্যমে আপনি ResultSet কে Java objects-এ কনভার্ট করতে পারবেন। এটি XML-based SQL mapping files এবং annotations ব্যবহার করে করা হয়।

এখানে iBATIS-এ SQL এবং Java Objects এর মধ্যে ম্যাপিং করার বিস্তারিত উদাহরণ দেওয়া হয়েছে।


1. MyBatis/iBATIS Configuration

iBATIS (MyBatis) ব্যবহার করার জন্য প্রথমে কনফিগারেশন করতে হয়, যেমন mybatis-config.xml এবং SQL Mapper XML। এই কনফিগারেশনগুলো ডেটাবেস সংযোগ এবং SQL কুয়েরি অপারেশনগুলো কাস্টমাইজ করে।

a) Create mybatis-config.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!-- Environments Configuration -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/your_database_name"/>
                <property name="username" value="your_database_username"/>
                <property name="password" value="your_database_password"/>
            </dataSource>
        </environment>
    </environments>

    <!-- Mapper files -->
    <mappers>
        <mapper resource="com/example/mappers/StudentMapper.xml"/>
    </mappers>
</configuration>

Explanation:

  • <dataSource>: ডেটাবেসের সংযোগ কনফিগারেশন (JDBC URL, ড্রাইভার, ইউজারনেম, পাসওয়ার্ড)।
  • <mappers>: এখানে StudentMapper.xml ফাইলটির রেফারেন্স দেওয়া হয়েছে, যেখানে SQL কুয়েরি এবং Java objects এর মধ্যে ম্যাপিং করা হয়েছে।

2. SQL and Java Object Mapping with MyBatis

MyBatis (iBATIS) ব্যবহার করে SQL কুয়েরি এবং Java objects এর মধ্যে ম্যাপিং করার জন্য Mapper XML ফাইল এবং Java Mapper Interface তৈরি করতে হবে।

a) Create StudentMapper.xml for SQL Mapping:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mappers.StudentMapper">

    <!-- Select Query to retrieve student details by ID -->
    <select id="selectStudent" resultType="com.example.Student">
        SELECT id, name, course FROM student WHERE id = #{id}
    </select>

    <!-- Insert Query to add a new student -->
    <insert id="insertStudent" parameterType="com.example.Student">
        INSERT INTO student (name, course) VALUES (#{name}, #{course})
    </insert>

    <!-- Update Query to update student details -->
    <update id="updateStudent" parameterType="com.example.Student">
        UPDATE student SET name = #{name}, course = #{course} WHERE id = #{id}
    </update>

    <!-- Delete Query to remove a student -->
    <delete id="deleteStudent" parameterType="int">
        DELETE FROM student WHERE id = #{id}
    </delete>

</mapper>

Explanation:

  • <select>: এটি একটি SQL SELECT কুয়েরি যা id এর মাধ্যমে Student অবজেক্টকে রিট্রিভ করে এবং resultTypecom.example.Student ক্লাস নির্ধারণ করে, যা SQL ফলাফলকে Student অবজেক্টে ম্যাপ করবে।
  • <insert>, <update>, <delete>: এই কুয়েরিগুলি যথাক্রমে নতুন ছাত্র সেভ, ছাত্রের তথ্য আপডেট, এবং ছাত্র মুছে ফেলতে ব্যবহৃত হয়।

3. Mapper Interface in Java

MyBatis বা iBATIS-এ Mapper Interface ব্যবহার করা হয়, যা XML ফাইলের কুয়েরি স্টেটমেন্টগুলোর সাথে Java কোডের মধ্যে সংযোগ স্থাপন করে।

Example: StudentMapper Interface

package com.example.mappers;

import com.example.Student;

public interface StudentMapper {

    // Select student by id
    Student selectStudent(int id);

    // Insert a new student
    void insertStudent(Student student);

    // Update student information
    void updateStudent(Student student);

    // Delete a student by id
    void deleteStudent(int id);
}

Explanation:

  • selectStudent(int id): এটি selectStudent SQL কুয়েরিকে কল করে, যা id দিয়ে Student অবজেক্ট রিট্রিভ করবে।
  • insertStudent(Student student): এটি insertStudent SQL কুয়েরিকে কল করে, যা Student অবজেক্ট ইনসার্ট করবে।
  • updateStudent(Student student): এটি updateStudent SQL কুয়েরিকে কল করে, যা Student অবজেক্ট আপডেট করবে।
  • deleteStudent(int id): এটি deleteStudent SQL কুয়েরিকে কল করে, যা id দ্বারা একটি ছাত্র মুছে ফেলবে।

4. Using MyBatis in Java Code

Java কোডে MyBatis ব্যবহারের জন্য, প্রথমে SqlSessionFactory এবং SqlSession তৈরি করতে হবে, যা SQL কুয়েরি চালানোর জন্য ব্যবহৃত হয়।

Example: Using MyBatis in Java

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import java.io.InputStream;

public class MyBatisUtil {

    private static SqlSessionFactory sessionFactory;

    static {
        try {
            // Load MyBatis configuration file
            InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
            sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // Method to get a SqlSession
    public static SqlSession getSession() {
        return sessionFactory.openSession();
    }
}

Using the Mapper Interface:

import org.apache.ibatis.session.SqlSession;

public class StudentDAO {

    public Student getStudentById(int id) {
        try (SqlSession session = MyBatisUtil.getSession()) {
            // Get the mapper instance
            StudentMapper mapper = session.getMapper(StudentMapper.class);
            // Call the method to retrieve student by id
            return mapper.selectStudent(id);
        }
    }

    public void saveStudent(Student student) {
        try (SqlSession session = MyBatisUtil.getSession()) {
            // Get the mapper instance
            StudentMapper mapper = session.getMapper(StudentMapper.class);
            // Call the method to insert the student
            mapper.insertStudent(student);
            // Commit the transaction
            session.commit();
        }
    }
}

Explanation:

  • getMapper(): getMapper() মেথডের মাধ্যমে StudentMapper ইন্টারফেসটি ইনস্ট্যান্স করা হয় এবং SQL কুয়েরি কার্যকর করা হয়।
  • session.commit(): ডেটাবেসে পরিবর্তন সেভ করতে commit() মেথড ব্যবহার করা হয়।

5. Using Annotations for SQL Mapping (Alternative to XML)

iBATIS/MyBatis-এ Annotations ব্যবহার করে SQL কুয়েরি ম্যানেজ করা সম্ভব। এটি XML ফাইলের পরিবর্তে Java কোডে SQL কুয়েরি নির্ধারণ করতে ব্যবহৃত হয়।

Example: Using Annotations for Mapping

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;

public interface StudentMapper {

    @Select("SELECT * FROM student WHERE id = #{id}")
    Student selectStudent(int id);

    @Insert("INSERT INTO student (name, course) VALUES (#{name}, #{course})")
    void insertStudent(Student student);
}

Explanation:

  • @Select: SQL SELECT কুয়েরি ব্যবহার করা হয়।
  • @Insert: SQL INSERT কুয়েরি ব্যবহার করা হয়।

iBATIS (MyBatis)-এ SQL এবং Java Objects এর মধ্যে ম্যাপিং করার জন্য Mapper XML ফাইল এবং Java Mapper Interface ব্যবহার করা হয়। আপনি XML-based configuration অথবা Annotations এর মাধ্যমে SQL কুয়েরি পরিচালনা করতে পারেন। MyBatis-এর সাথে SQL কোয়েরি এবং Java objects-এর মধ্যে ম্যাপিং ব্যবস্থাপনা সহজ এবং কাস্টমাইজযোগ্য হয়, কারণ আপনি SQL কুয়েরি সম্পূর্ণরূপে কাস্টমাইজ করতে পারেন এবং Java objects-এ ফলাফল ম্যাপ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...