iBATIS, বর্তমানে MyBatis নামে পরিচিত, একটি জনপ্রিয় Java Persistence Framework যা SQL-ভিত্তিক ডেটাবেস অ্যাক্সেস সরবরাহ করে। MyBatis ডেটাবেসের সাথে কাজ করতে SQL ম্যানুয়ালি লেখা এবং XML ফাইলের মাধ্যমে mapping ব্যবহারের সুবিধা প্রদান করে। এটি Hibernate এবং JPA থেকে আলাদা, কারণ এটি ORM (Object-Relational Mapping) এর পরিবর্তে SQL Mapping প্রক্রিয়াকে ব্যবহার করে।
এখানে আমরা আলোচনা করবো কিভাবে Maven এর মাধ্যমে iBATIS (MyBatis) লাইব্রেরি ইন্টিগ্রেট করা যায় এবং সেটি কনফিগার করে ডেটাবেস অপারেশন সম্পাদন করা যায়।
Step 1: Maven Dependency for iBATIS (MyBatis)
প্রথমে, Maven প্রোজেক্টে iBATIS (MyBatis) লাইব্রেরি অন্তর্ভুক্ত করতে আপনাকে pom.xml ফাইলে প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে। iBATIS বর্তমানে MyBatis নামেই পরিচিত, তাই নিচের ডিপেনডেন্সি ব্যবহার করতে হবে।
Maven Dependency for MyBatis:
<dependencies>
<!-- MyBatis Core -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version> <!-- Use latest version -->
</dependency>
<!-- MyBatis-Spring for Integration with Spring Framework (optional) -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- JDBC Driver (Example: H2 Database) -->
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
Explanation:
- mybatis: এটি MyBatis লাইব্রেরির মূল ডিপেনডেন্সি।
- mybatis-spring (ঐচ্ছিক): যদি আপনি Spring Framework ব্যবহার করছেন, তবে MyBatis-Spring লাইব্রেরি ব্যবহার করতে পারেন যাতে Spring এর সাথে MyBatis ইন্টিগ্রেশন হয়।
- JDBC Driver: আপনার ডেটাবেসের জন্য উপযুক্ত JDBC ড্রাইভার যুক্ত করুন (উদাহরণস্বরূপ, H2 Database ড্রাইভার এখানে ব্যবহার করা হয়েছে)।
Step 2: MyBatis Configuration (XML File)
MyBatis কনফিগারেশন সাধারণত একটি XML ফাইলে করা হয়, যেখানে ডেটাবেস সংযোগ এবং SQL ম্যানিপুলেশন সেটআপ করা হয়।
MyBatis Configuration Example (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>
<!-- 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: এখানে JDBC ট্রানজেকশন ম্যানেজার এবং dataSource কনফিগার করা হয়েছে। ডেটাবেসের জন্য হোস্ট, ইউজারনেম, পাসওয়ার্ড এবং ড্রাইভার সেট করা হয়।
- mappers: এখানে MyBatis XML ম্যাপার ফাইলের অবস্থান নির্ধারণ করা হয়েছে, যেখানে SQL স্টেটমেন্ট এবং রেজাল্ট ম্যাপিং করা থাকে।
Step 3: Mapper Interface and XML Mapper Files
MyBatis এ SQL স্টেটমেন্ট এবং তাদের সম্পর্কিত মেথড গুলো Mapper Interface এবং XML Mapper ফাইল দ্বারা পরিচালিত হয়।
Mapper Interface (EmployeeMapper.java)
package com.example.mapper;
import com.example.model.Employee;
import java.util.List;
public interface EmployeeMapper {
// Select all employees
List<Employee> getAllEmployees();
// Select employee by ID
Employee getEmployeeById(int id);
// Insert a new employee
void insertEmployee(Employee employee);
// Update employee details
void updateEmployee(Employee employee);
// Delete employee by ID
void deleteEmployee(int id);
}
Mapper XML (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 Interface:
EmployeeMapper.javaএ CRUD অপারেশন সংজ্ঞায়িত করা হয়েছে। - Mapper XML: এখানে SQL Queries (select, insert, update, delete) Mapper XML ফাইলে লেখা হয়েছে এবং তারা
EmployeeMapperইন্টারফেসের সাথে যুক্ত।
Step 4: MyBatis Session Factory and Main Code
এখন, MyBatis কনফিগারেশন এবং Mapper ইন্টারফেস ব্যবহার করে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারেন।
MyBatis Session Factory Setup (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 এর কনফিগারেশন এবং Session সেটআপ করা হয়েছে।
- Mapper Interface:
EmployeeMapperএর মাধ্যমে ডেটাবেস থেকে ডেটা রিট্রিভ করার জন্য getAllEmployees মেথড কল করা হয়েছে এবং একটি নতুন Employee যোগ করা হয়েছে।
Step 5: Run and Test
এখন, আপনি MyBatis কনফিগারেশনের সাথে ডেটাবেসে CRUD অপারেশন সঞ্চালন করতে পারবেন। আপনি EmployeeMapper.xml ফাইলে SQL কুয়েরি এবং ম্যাপিং পরিবর্তন করতে পারেন, এবং Main.java ফাইলে ডেটা অ্যাক্সেস করতে পারবেন।
Maven দিয়ে iBATIS (MyBatis) অন্তর্ভুক্ত করার মাধ্যমে আপনি SQL ভিত্তিক ডেটাবেস অ্যাক্সেস আরও সহজ ও কার্যকরী করতে পারবেন। Maven dependencies, MyBatis configuration, mapper interface, এবং XML mapper ফাইল ব্যবহারের মাধ্যমে আপনি CRUD অপারেশন সম্পন্ন করতে পারবেন।
- Mapper Interface: SQL ম্যানিপুলেশন এর জন্য Java ইন্টারফেস তৈরি করে।
- XML Mapping: SQL স্টেটমেন্ট এবং রেজাল্ট ম্যাপিং XML ফাইলে থাকে।
- SessionFactory: MyBatis সেশনের মাধ্যমে ডেটাবেসের সাথে যোগাযোগ।
Read more