iBATIS (MyBatis) হল একটি ওপেন সোর্স প্যাকেজ যা Java ডেভেলপারদের জন্য SQL ভিত্তিক পদ্ধতি ব্যবহার করে ডেটাবেসের সাথে অবজেক্ট ম্যাপিং করার জন্য ডিজাইন করা হয়েছে। MyBatis (আগে iBATIS নামে পরিচিত) হল একটি persistence framework যা JDBC-এর সাথে ইন্টিগ্রেট করা যায় এবং এতে ডেভেলপারদের SQL কুয়েরি তৈরি এবং চালানো সহজ করে তোলে। এটি Object-Relational Mapping (ORM) এর তুলনায় কম জটিল এবং বেশি কাস্টমাইজযোগ্য।
এখানে iBATIS/MyBatis এর জন্য Database Connection এবং SQL Map Configuration সেটআপ করার বিস্তারিত উদাহরণ দেওয়া হল।
1. Database Connection Configuration in iBATIS/MyBatis
iBATIS/MyBatis-এর জন্য ডেটাবেস কনফিগারেশন mybatis-config.xml ফাইলের মাধ্যমে করা হয়। এই ফাইলে ডেটাবেস সংযোগের তথ্য যেমন JDBC URL, ইউজারনেম, পাসওয়ার্ড ইত্যাদি নির্ধারণ করা হয়।
Step 1: Add JDBC Driver and MyBatis Dependencies to pom.xml (Maven)
প্রথমে, আপনার Maven প্রজেক্টে mybatis এবং JDBC Driver ডিপেনডেন্সি যোগ করুন।
<dependencies>
<!-- MyBatis Dependency -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MyBatis-Spring Integration Dependency (optional) -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- JDBC Driver (e.g., MySQL Connector for MySQL Database) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
Step 2: Create mybatis-config.xml for Database Connection
এটি src/main/resources ফোল্ডারে থাকবে এবং এতে ডেটাবেস কনফিগারেশন থাকবে।
<?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>
<!-- Environment 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_db_name"/>
<property name="username" value="root"/>
<property name="password" value="your_password"/>
</dataSource>
</environment>
</environments>
<!-- Mapper Files -->
<mappers>
<mapper resource="com/yourpackage/mapper/EmployeeMapper.xml"/>
</mappers>
</configuration>
<transactionManager>: এটি ট্রানজেকশন ম্যানেজার কনফিগারেশন নির্ধারণ করে।<dataSource>: এখানে ডেটাবেসের জন্য ডেটাসোর্স কনফিগার করা হয়, যেমন ড্রাইভার, ইউআরএল, ইউজারনেম এবং পাসওয়ার্ড।<mappers>: এখানে আপনার Mapper XML ফাইলের লিঙ্ক দেওয়া হয়।
Explanation:
- JDBC Configuration: ডেটাবেসের ড্রাইভার, URL, ইউজারনেম এবং পাসওয়ার্ড এই কনফিগারেশনের মধ্যে নির্ধারণ করা হয়।
- POOLED DataSource:
POOLEDটাইপ ব্যবহার করা হচ্ছে, যাতে ডেটাবেস সংযোগ পুলের মাধ্যমে একাধিক সংযোগ ব্যবস্থাপনা করা যায়, যা পারফরম্যান্স উন্নত করে।
2. SQL Map Configuration in MyBatis
MyBatis-এর মূল কার্যকারিতা হল SQL Map Configuration। এখানে আপনি SQL কুয়েরি গুলি লিখবেন যা পরে আপনার Java অবজেক্টের সাথে ম্যাপ হবে। এই কনফিগারেশন সাধারণত Mapper XML ফাইলের মাধ্যমে করা হয়।
Step 1: Create Mapper Interface
MyBatis-এর সাথে ডেটাবেস অপারেশন করার জন্য আপনাকে একটি Mapper Interface তৈরি করতে হবে। এটি EmployeeMapper নামক একটি ইন্টারফেস হতে পারে।
public interface EmployeeMapper {
// SQL Query to fetch employee by ID
Employee getEmployeeById(int id);
// SQL Query to insert a new employee
void insertEmployee(Employee employee);
// SQL Query to update an existing employee
void updateEmployee(Employee employee);
// SQL Query to delete an employee
void deleteEmployee(int id);
}
Step 2: Create Mapper XML File
এখন আপনাকে একটি Mapper XML ফাইল তৈরি করতে হবে, যেখানে আপনি SQL কুয়েরি গুলি লিখবেন। এটি সাধারণত src/main/resources/com/yourpackage/mapper/ ফোল্ডারে রাখা হয়।
<mapper namespace="com.yourpackage.mapper.EmployeeMapper">
<!-- SQL Query to get employee by ID -->
<select id="getEmployeeById" parameterType="int" resultType="Employee">
SELECT * FROM employee WHERE id = #{id}
</select>
<!-- SQL Query to insert an employee -->
<insert id="insertEmployee" parameterType="Employee">
INSERT INTO employee (name, email)
VALUES (#{name}, #{email})
</insert>
<!-- SQL Query to update an employee -->
<update id="updateEmployee" parameterType="Employee">
UPDATE employee
SET name = #{name}, email = #{email}
WHERE id = #{id}
</update>
<!-- SQL Query to delete an employee -->
<delete id="deleteEmployee" parameterType="int">
DELETE FROM employee WHERE id = #{id}
</delete>
</mapper>
<select>: এটি একটি SQL কুয়েরি যা ডেটাবেস থেকেEmployeeরিটার্ন করবে।<insert>: এটি একটি SQL কুয়েরি যা ডেটাবেসে নতুনEmployeeইনসার্ট করবে।<update>: এটি একটি SQL কুয়েরি যা একটিEmployeeআপডেট করবে।<delete>: এটি একটি SQL কুয়েরি যা একটিEmployeeমুছে ফেলবে।
Explanation:
#{}: এখানে#{}সিঙ্কট্যাক্স ব্যবহার করা হচ্ছে যা MyBatis-এর প্যারামিটার প্লেসহোল্ডার হিসেবে কাজ করে, যেগুলি পরে ডাইনামিকভাবে ইনজেক্ট করা হয়।
3. Using MyBatis in Java Code
এখন, আপনাকে SqlSessionFactory তৈরি করতে হবে এবং MyBatis সেশনে লগ ইন করতে হবে। এরপর আপনি Mapper Interface ব্যবহার করে SQL কুয়েরি চালাতে পারবেন।
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.Reader;
public class MyBatisApp {
public static void main(String[] args) {
try {
// Initialize SqlSessionFactory
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
// Open a session
try (SqlSession session = sessionFactory.openSession()) {
// Get Mapper interface
EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
// Fetch employee by ID
Employee employee = employeeMapper.getEmployeeById(1);
System.out.println(employee.getName());
// Insert a new employee
Employee newEmployee = new Employee("John Doe", "john.doe@example.com");
employeeMapper.insertEmployee(newEmployee);
session.commit(); // Commit the transaction
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Explanation:
Resources.getResourceAsReader("mybatis-config.xml"): এটি MyBatis কনফিগারেশন ফাইলটি লোড করে।session.getMapper(EmployeeMapper.class): এটিEmployeeMapperইন্টারফেসের মাধ্যমে SQL কুয়েরি চালানোর জন্য সেশন সেটআপ করে।session.commit(): যেহেতু ডেটাবেসে পরিবর্তন হচ্ছে, সুতরাং আপনি commit করবেন যাতে পরিবর্তনগুলি সেভ হয়।
4. Run the Project
- Run the Application: আপনার
MyBatisAppক্লাসটি রান করুন এবং নিশ্চিত করুন যে ডেটাবেসে ডেটা সঠিকভাবে লোড এবং ইনসার্ট হচ্ছে। - Test Queries: SQL কুয়েরিগুলি পরীক্ষা করুন এবং নিশ্চিত করুন যে
EmployeeMapper.xmlফাইলের কুয়েরি সঠিকভাবে কাজ করছে।
iBATIS (MyBatis) ব্যবহারের মাধ্যমে আপনি SQL কুয়েরির মাধ্যমে ডেটাবেস অপারেশন করতে পারেন। Database Connection কনফিগারেশন এবং SQL Map Configuration দুটি প্রধান পদক্ষেপ যেখানে Hibernate-এর তুলনায় MyBatis কিছুটা বেশি কাস্টমাইজেশন প্রদান করে, কারণ আপনি সরাসরি SQL কুয়েরি লিখে কাজ করতে পারেন।
mybatis-config.xmlফাইলে ডেটাবেস কনফিগারেশন করা হয়।- Mapper Interface এবং Mapper XML ফাইলের মাধ্যমে SQL কুয়েরি পরিচালনা করা হয়।
- SqlSessionFactory এর মাধ্যমে ডেটাবেস সেশনে কানেক্ট হয়ে আপনি সহজেই ডেটাবেস অপারেশন করতে পারেন।
এটি MyBatis-এ ডেটাবেস কনফিগারেশন ও SQL ম্যাপিংয়ের জন্য একটি বেসিক গাইডলাইন।
Read more