iBATIS (বর্তমানে MyBatis নামে পরিচিত) একটি ORM ফ্রেমওয়ার্ক যা ডেটাবেসের সাথে সহজে কাজ করতে সাহায্য করে। iBATIS-এ, সমস্ত SQL ম্যানিপুলেশন XML মেপিং ফাইল এ সংজ্ঞায়িত করা হয়, যা sql-map-config.xml এর মাধ্যমে কনফিগার করা হয়।
1. sql-map-config.xml এর ভূমিকা
iBATIS কনফিগারেশন ফাইল sql-map-config.xml একাধিক SQL Map ফাইল (যা প্রতিটি Entity এর জন্য SQL কোড ধারণ করে) এবং ডেটাবেস সংযোগ সম্পর্কিত কনফিগারেশন ধারণ করে। এই ফাইলে MyBatis (বা iBATIS) কনফিগারেশন, ডেটাবেস সংযোগ, মেপার ফাইল ইত্যাদি সেটআপ করা হয়।
sql-map-config.xml ফাইলের মৌলিক কাঠামো:
- DataSource Configuration: ডেটাবেস কানেকশন সম্পর্কিত কনফিগারেশন (যেমন JDBC ড্রাইভার, URL, ইউজারনেম, পাসওয়ার্ড ইত্যাদি)।
- Transaction Configuration: iBATIS এর জন্য ট্রানজেকশন ম্যানেজমেন্ট সেটআপ।
- SQL Map Files: যে ফাইলগুলিতে SQL কুয়েরি এবং মেপিং রয়েছে, তা অন্তর্ভুক্ত করা।
2. sql-map-config.xml কনফিগারেশন উদাহরণ
নিচে একটি sql-map-config.xml ফাইলের উদাহরণ দেওয়া হয়েছে যা একটি সাধারণ iBATIS কনফিগারেশন ফাইল হিসেবে কাজ করবে।
sql-map-config.xml Example:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS//DTD SQL Map Config 3.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-3.dtd">
<sqlMapConfig>
<!-- DataSource Configuration -->
<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>
<!-- Transaction Manager Configuration -->
<transactionManager type="JDBC"/>
<!-- SQL Map Files -->
<sqlMap resource="com/example/mapper/EmployeeMapper.xml"/>
<sqlMap resource="com/example/mapper/DepartmentMapper.xml"/>
</sqlMapConfig>
বিভিন্ন অংশের ব্যাখ্যা:
dataSource: এটি ডেটাবেস সংযোগের জন্য প্রয়োজনীয় কনফিগারেশন ধারণ করে।driver: ডেটাবেসের জন্য ড্রাইভার (এই ক্ষেত্রে H2 ডেটাবেস ব্যবহার করা হয়েছে)।url: ডেটাবেস URL যেখানে ডাটাবেসটি অবস্থান করছে।usernameএবংpassword: ডেটাবেসের সংযোগের জন্য প্রয়োজনীয় ইউজারনেম এবং পাসওয়ার্ড।
transactionManager: iBATIS এর জন্য ট্রানজেকশন ব্যবস্থাপনা কনফিগারেশন। এখানেJDBCট্রানজেকশন ম্যানেজার ব্যবহার করা হয়েছে, তবে আপনিMANAGEDঅথবাSPRINGধরনের ট্রানজেকশন ম্যানেজারও ব্যবহার করতে পারেন, যদি আপনি Spring-এর সাথে iBATIS ইন্টিগ্রেট করেন।sqlMap: এটি SQL ম্যানিপুলেশন ফাইলগুলির রেফারেন্স। এখানেEmployeeMapper.xmlএবংDepartmentMapper.xmlদুটি SQL Mapper ফাইলের রেফারেন্স দেওয়া হয়েছে। প্রতিটি মেপার ফাইল SQL কুয়েরি ধারণ করে এবং এগুলির সাথে জাভা অবজেক্টগুলি মেপ করা হয়।
3. SQL Map File Example (EmployeeMapper.xml)
এখন, আসুন একটি সাধারণ SQL Map ফাইলের উদাহরণ দেখি, যেখানে SQL কুয়েরি এবং তাদের মেপিং যুক্ত করা হয়েছে।
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">
<!-- SQL Query to get an employee by ID -->
<select id="getEmployeeById" resultClass="com.example.model.Employee">
SELECT id, name, department
FROM employee
WHERE id = #{id}
</select>
<!-- SQL Query to insert a new employee -->
<insert id="insertEmployee" parameterClass="com.example.model.Employee">
INSERT INTO employee (name, department)
VALUES (#{name}, #{department})
</insert>
</mapper>
ব্যাখ্যা:
<select>:getEmployeeByIdকুয়েরি চালাচ্ছে, যাEmployeeক্লাসের একটি অবজেক্ট রিটার্ন করবে, এবং কুয়েরি প্যারামিটার হিসেবেidব্যবহার করবে।<insert>:insertEmployeeকুয়েরি একটি নতুনEmployeeঅবজেক্ট ইনসার্ট করে।
এখানে namespace হল মেপার ফাইলের নামস্পেস, যা জাভা ক্লাসের সাথে সম্পর্কিত থাকে। resultClass এবং parameterClass ব্যবহার করা হয় SQL কুয়েরির রিটার্ন ও ইনপুট ডেটা মেপ করতে।
4. Java Code to Use iBATIS
এখন, Java কোডের মাধ্যমে sql-map-config.xml কনফিগারেশন এবং EmployeeMapper মেপার ফাইল ব্যবহার করে SQL কুয়েরি চালানো দেখাবো।
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);
Employee employee = mapper.getEmployeeById(1);
System.out.println("Employee: " + employee);
// Step 4: Insert a new employee
Employee newEmployee = new Employee("Jane Doe", "HR");
mapper.insertEmployee(newEmployee);
session.commit(); // Commit transaction
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে:
SqlSessionFactory:sql-map-config.xmlকনফিগারেশন ফাইল থেকেSqlSessionFactoryতৈরি হচ্ছে।SqlSession: এটি MyBatis এর মাধ্যমে ডেটাবেস অপারেশন পরিচালনা করার জন্য ব্যবহৃত হয়।mapper.getEmployeeById(1)এবংmapper.insertEmployee(newEmployee): MyBatis Mapper ফাইলের মাধ্যমে SQL কুয়েরি চালানো হচ্ছে।
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) কনফিগারেশন ফাইল sql-map-config.xml তৈরি করার মাধ্যমে আপনি:
- DataSource Configuration: ডেটাবেস কানেকশন কনফিগার করতে পারেন।
- Transaction Management: ডেটাবেস ট্রানজেকশন পরিচালনা করতে পারেন।
- SQL Map Files: SQL কুয়েরি এবং তাদের মেপিং কনফিগার করতে পারেন।
এই কনফিগারেশন ফাইল এবং MyBatis Mapper ফাইলের মাধ্যমে আপনি সহজেই SQL কোড এবং ডেটাবেস অপারেশনকে Java কোডের সাথে মেপ করতে পারেন। MyBatis বা iBATIS ব্যবহারে SQL কুয়েরি এবং ডেটাবেসের সাথে কাজ করার প্রক্রিয়া সহজ এবং পরিষ্কার হয়।
Read more