iBATIS (বর্তমানে MyBatis নামে পরিচিত) একটি জনপ্রিয় ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা SQL কুয়েরির মাধ্যমে ডেটাবেসের সাথে কাজ করে। iBATIS ডেটাবেসের টেবিলগুলির সাথে Java Objects মেপ করতে সহায়তা করে। এতে Select, Insert, Update, এবং Delete স্টেটমেন্টের জন্য Mapping করার কাজটি সহজ হয়।
এই গাইডে আমরা Select, Insert, Update, এবং Delete কুয়েরি কিভাবে iBATIS (MyBatis) দিয়ে Java কোডে মেপিং করতে হয়, তা দেখব।
1. MyBatis Mapping Overview
MyBatis এ, SQL কুয়েরি এবং তাদের সম্পর্কিত জাভা অবজেক্টগুলির মধ্যে Mapping এর জন্য XML মেপিং ফাইল ব্যবহার করা হয়। iBATIS-এ সাধারণত Mapper XML Files ব্যবহার করে SQL কুয়েরি এবং তাদের ফলাফল মেপ করা হয়।
Example: Employee Entity Class
প্রথমে, আমাদের একটি Employee ক্লাস দরকার, যা ডেটাবেসের employee টেবিলের সাথে মেপ করা হবে।
public class Employee {
private int id;
private String name;
private String department;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
2. MyBatis Mapper XML Example
এখন, আমরা Employee ক্লাসের জন্য Mapper XML ফাইল তৈরি করব, যেখানে Select, Insert, Update, এবং Delete কুয়েরি এবং তাদের মেপিং কনফিগার করা হবে।
EmployeeMapper.xml Example:
<?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">
<!-- Select Query: Get Employee by ID -->
<select id="getEmployeeById" resultType="com.example.model.Employee">
SELECT id, name, department
FROM employee
WHERE id = #{id}
</select>
<!-- Insert Query: Insert a new Employee -->
<insert id="insertEmployee" parameterType="com.example.model.Employee">
INSERT INTO employee (name, department)
VALUES (#{name}, #{department})
</insert>
<!-- Update Query: Update Employee details -->
<update id="updateEmployee" parameterType="com.example.model.Employee">
UPDATE employee
SET name = #{name}, department = #{department}
WHERE id = #{id}
</update>
<!-- Delete Query: Delete an Employee by ID -->
<delete id="deleteEmployee" parameterType="int">
DELETE FROM employee
WHERE id = #{id}
</delete>
</mapper>
বিভিন্ন Query এর ব্যাখ্যা:
<select>:id="getEmployeeById": এই কুয়েরিEmployeeঅবজেক্টেরidদিয়ে ডেটাবেস থেকেEmployeeতথ্য রিটার্ন করবে।resultType="com.example.model.Employee": কুয়েরি রিটার্নের ফলাফল একটিEmployeeঅবজেক্টে ম্যাপ করা হবে।
<insert>:id="insertEmployee": নতুনEmployeeইনসার্ট করার জন্য SQL কুয়েরি।parameterType="com.example.model.Employee":Employeeঅবজেক্টের মধ্যে থাকা ডেটাnameএবংdepartmentহিসাবে SQL কুয়েরিতে ম্যাপ হবে।
<update>:id="updateEmployee": একটিEmployeeএর তথ্য আপডেট করতে ব্যবহৃত কুয়েরি।parameterType="com.example.model.Employee":Employeeঅবজেক্টের ডেটা SQL কুয়েরিতে আপডেট হবে।
<delete>:id="deleteEmployee": একটিEmployeeরেকর্ড ডিলিট করার জন্য SQL কুয়েরি।parameterType="int": ডিলিট অপারেশনটিidএর মাধ্যমে হবে।
3. Java Code to Use MyBatis Mapping
এখন, Java কোডে MyBatis ব্যবহারের মাধ্যমে এই কুয়েরি চালাতে হবে। আমরা SqlSession এবং Mapper ব্যবহার করে ডেটাবেস অপারেশনগুলি চালাবো।
EmployeeApp.java Example:
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.example.model.Employee;
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 a session
try (SqlSession session = sessionFactory.openSession()) {
// Step 3: Execute SQL query using the Mapper
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
// Select Query: Get Employee by ID
Employee employee = mapper.getEmployeeById(1);
System.out.println("Employee: " + employee.getName() + ", " + employee.getDepartment());
// Insert Query: Insert a new employee
Employee newEmployee = new Employee();
newEmployee.setName("John Doe");
newEmployee.setDepartment("Finance");
mapper.insertEmployee(newEmployee);
session.commit(); // Commit transaction
// Update Query: Update an employee
employee.setName("Updated Name");
mapper.updateEmployee(employee);
session.commit(); // Commit transaction
// Delete Query: Delete an employee
mapper.deleteEmployee(1);
session.commit(); // Commit transaction
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. Explanation of Java Code:
SqlSessionFactory:sql-map-config.xmlকনফিগারেশন ফাইল থেকেSqlSessionFactoryতৈরি করা হচ্ছে।SqlSession:SqlSessionঅবজেক্ট ব্যবহার করে SQL কুয়েরি চালানো হয়।mapper.getEmployeeById(1):EmployeeMapperএর মাধ্যমেgetEmployeeByIdকুয়েরি চালানো হয়।mapper.insertEmployee(newEmployee):insertEmployeeকুয়েরি ব্যবহার করে নতুন কর্মচারী ইনসার্ট করা হয়।mapper.updateEmployee(employee):updateEmployeeকুয়েরি ব্যবহার করে কর্মচারী আপডেট করা হয়।mapper.deleteEmployee(1):deleteEmployeeকুয়েরি ব্যবহার করে কর্মচারী ডিলিট করা হয়।session.commit(): ডেটাবেসে পরিবর্তন নিশ্চিত করার জন্য কমিট করা হয়।
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) এর মাধ্যমে Select, Insert, Update, এবং Delete স্টেটমেন্টগুলোকে XML Mapper ফাইলের মাধ্যমে মেপ করা যায়। এই পদ্ধতিতে আপনি:
- MyBatis Mapper XML ব্যবহার করে SQL কুয়েরি তৈরি এবং তাদের Java অবজেক্টের সাথে মেপ করতে পারেন।
- SqlSession এবং Mapper এর মাধ্যমে ডেটাবেস অপারেশনগুলি পরিচালনা করতে পারেন।
- Gradle বা Maven ব্যবহার করে প্রোজেক্ট বিল্ড এবং রান করতে পারেন।
MyBatis (iBATIS) ব্যবহার করলে SQL কুয়েরি এবং ডেটাবেস অপারেশনগুলির সাথে কাজ করা খুবই সহজ এবং কার্যকরী হয়।
Read more