iBATIS, বর্তমানে MyBatis নামে পরিচিত, একটি Java ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা SQL Mapping এর মাধ্যমে ডেটাবেস অপারেশন পরিচালনা করে। Hibernate এবং JPA এর তুলনায়, iBATIS (MyBatis) SQL কোড ম্যানুয়ালি লেখার মাধ্যমে SQL Mapping এবং Java Object Mapping সংজ্ঞায়িত করে। এতে, ডেটাবেস অপারেশন পরিচালনা করা হয় SQL স্টেটমেন্টের মাধ্যমে, যা XML ফাইলের মাধ্যমে কনফিগার করা হয়।
এখানে আলোচনা করা হবে কিভাবে SQL Statement তৈরি করতে হয় এবং তা XML ফাইলে কনফিগার করা যায়।
Step 1: Maven Dependency for MyBatis (iBATIS)
প্রথমে, pom.xml ফাইলে MyBatis লাইব্রেরি যুক্ত করতে হবে।
<dependencies>
<!-- MyBatis Core Dependency -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version> <!-- Use latest version -->
</dependency>
<!-- JDBC Driver (Example: H2 Database) -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
এখানে, mybatis হল লাইব্রেরির মূল ডিপেনডেন্সি এবং h2 ডেটাবেস ড্রাইভার উদাহরণস্বরূপ ব্যবহৃত হয়েছে। আপনার প্রজেক্টে নির্দিষ্ট ডেটাবেস অনুযায়ী ড্রাইভার পরিবর্তন করতে হবে।
Step 2: MyBatis Configuration (XML Configuration)
MyBatis কনফিগারেশন সাধারণত একটি XML ফাইলে থাকে, যেখানে ডেটাবেস সংযোগ, SQL স্টেটমেন্ট এবং ম্যাপিং কনফিগার করা হয়।
mybatis-config.xml Example:
<?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>
<!-- JDBC Connection Settings -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:test;DB_CLOSE_DELAY=-1"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<!-- MyBatis Mapper Locations -->
<mappers>
<mapper resource="com/example/mapper/EmployeeMapper.xml"/>
</mappers>
</configuration>
Explanation:
- environments:
developmentনামে একটি environment তৈরি করা হয়েছে, যেখানে transactionManager এবং dataSource কনফিগার করা হয়েছে। - dataSource: JDBC ড্রাইভার, ইউআরএল, ইউজারনেম এবং পাসওয়ার্ড এখানে সংজ্ঞায়িত করা হয়েছে।
- mappers: এখানে, MyBatis এর মেপার XML ফাইলের অবস্থান নির্ধারণ করা হয়েছে, যেখানে SQL স্টেটমেন্ট এবং তাদের Java মডেল ক্লাসের মধ্যে সম্পর্ক তৈরি করা হয়।
Step 3: Mapper Interface and XML Mapper
MyBatis এর মাধ্যমে SQL স্টেটমেন্ট এবং Java objects এর সম্পর্ক তৈরি করার জন্য Mapper Interface এবং XML Mapper ফাইল ব্যবহার করতে হয়।
Mapper Interface Example (EmployeeMapper.java)
package com.example.mapper;
import com.example.model.Employee;
import java.util.List;
public interface EmployeeMapper {
// Get all employees
List<Employee> getAllEmployees();
// Get employee by ID
Employee getEmployeeById(int id);
// Insert employee
void insertEmployee(Employee employee);
// Update employee
void updateEmployee(Employee employee);
// Delete employee by ID
void deleteEmployee(int id);
}
এখানে, EmployeeMapper ইন্টারফেসে বিভিন্ন CRUD অপারেশন সংজ্ঞায়িত করা হয়েছে।
Mapper XML Example (EmployeeMapper.xml)
<?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.mapper.EmployeeMapper">
<!-- SQL Query to Get All Employees -->
<select id="getAllEmployees" resultType="com.example.model.Employee">
SELECT * FROM Employee
</select>
<!-- SQL Query to Get Employee by ID -->
<select id="getEmployeeById" parameterType="int" resultType="com.example.model.Employee">
SELECT * FROM Employee WHERE id = #{id}
</select>
<!-- SQL Query to Insert Employee -->
<insert id="insertEmployee" parameterType="com.example.model.Employee">
INSERT INTO Employee (name, position, salary)
VALUES (#{name}, #{position}, #{salary})
</insert>
<!-- SQL Query to Update Employee -->
<update id="updateEmployee" parameterType="com.example.model.Employee">
UPDATE Employee SET name = #{name}, position = #{position}, salary = #{salary}
WHERE id = #{id}
</update>
<!-- SQL Query to Delete Employee -->
<delete id="deleteEmployee" parameterType="int">
DELETE FROM Employee WHERE id = #{id}
</delete>
</mapper>
Explanation:
- Mapper XML ফাইলে SQL Queries লেখা হয়েছে, যেমন
SELECT,INSERT,UPDATE, এবংDELETE। এগুলিEmployeeMapperইন্টারফেসের মেথডের সাথে সম্পর্কিত। - parameterType এবং resultType ব্যবহৃত হয়েছে, যেখানে
parameterTypeহল SQL কুয়েরিতে পাঠানো প্যারামিটার এবংresultTypeহল SQL থেকে ফেরত আসা ফলাফল।
Step 4: MyBatis Session Factory and Main Code
MyBatis সেশন তৈরি করে এবং ম্যাপার ব্যবহার করে SQL স্টেটমেন্টগুলির কার্যকরী করা হয়।
Main Application Code Example (Main.java)
package com.example;
import com.example.mapper.EmployeeMapper;
import com.example.model.Employee;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.List;
public class Main {
public static void main(String[] args) {
// MyBatis configuration and session factory setup
String resource = "mybatis-config.xml";
InputStream inputStream = Main.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// Open session
try (SqlSession session = sqlSessionFactory.openSession()) {
EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
// Get all employees
List<Employee> employees = employeeMapper.getAllEmployees();
for (Employee employee : employees) {
System.out.println(employee);
}
// Insert a new employee
Employee newEmployee = new Employee("John Doe", "Developer", 80000);
employeeMapper.insertEmployee(newEmployee);
session.commit(); // Commit the transaction
}
}
}
Explanation:
- SqlSessionFactory: MyBatis কনফিগারেশন ফাইল
mybatis-config.xmlথেকে সেশন ফ্যাক্টরি তৈরি করা হয়েছে। - Mapper Interface:
EmployeeMapperব্যবহার করে SQL কুয়েরি রিটার্ন করা হচ্ছে এবং Employee অবজেক্ট ইনসার্ট করা হচ্ছে। - session.commit(): SQL অপারেশন সম্পন্ন করার পর commit কল করা হয়েছে, যাতে ডেটাবেসে পরিবর্তন সংরক্ষণ হয়।
- SQL Map Configuration MyBatis (iBATIS) এর একটি গুরুত্বপূর্ণ অংশ, যা ডেটাবেসের সাথে যোগাযোগ এবং SQL স্টেটমেন্টগুলি Java objects এর সাথে ম্যাপ করার কাজ করে।
- Mapper Interface এবং XML Mapper ফাইল ব্যবহার করে আপনি SQL স্টেটমেন্টগুলোকে Java মেথডের সাথে সংযুক্ত করতে পারেন, এবং সেই অনুযায়ী ডেটাবেস অপারেশন পরিচালনা করতে পারেন।
- MyBatis XML কনফিগারেশন ফাইলটি MyBatis এর বিভিন্ন সেটিংস যেমন DataSource, Transaction Management, এবং SQL Statements সেটআপ করতে সহায়তা করে।
Read more