iBATIS (বর্তমানে MyBatis) একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক, যা Java অ্যাপ্লিকেশন এবং রিলেশনাল ডেটাবেসের মধ্যে যোগাযোগে ব্যবহৃত হয়। iBATIS আপনাকে SQL কুয়েরি গুলি সম্পূর্ণভাবে কাস্টমাইজড এবং ডেটাবেস ইন্টারঅ্যাকশনের জন্য ম্যানুয়ালি লিখতে দেয়। এটি Hibernate এর মতো সম্পূর্ণ ORM নয়, কিন্তু একটি Data Mapper প্যাটার্ন ব্যবহার করে ডেটাবেসের সাথে কাজ করে, যেখানে আপনি SQL কুয়েরি লেখার সময় ডেটা ম্যানিপুলেশন করতে পারেন।
iBATIS সহজে কনফিগার করা যায় এবং এটি ডেটাবেস সম্পর্কিত কোডকে SQL এবং Java objects এর মধ্যে সুনির্দিষ্টভাবে ম্যাপ করতে সহায়ক।
iBATIS (MyBatis) সেটআপ এবং ইন্সটলেশন
iBATIS (এখন MyBatis) সেটআপ এবং ইন্সটলেশন খুবই সরল। এখানে Maven ব্যবহার করে iBATIS সেটআপ করার পদ্ধতি দেওয়া হলো। MyBatis iBATIS-এর পরবর্তী ভার্সন এবং এটি বর্তমানে ব্যবহৃত হয়।
Step 1: Maven Dependency for iBATIS (MyBatis)
প্রথমে আপনার pom.xml ফাইলে iBATIS (MyBatis) এর জন্য Maven ডিপেনডেন্সি যুক্ত করতে হবে।
<dependencies>
<!-- MyBatis Dependency -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version> <!-- Use the latest version -->
</dependency>
<!-- MyBatis-Spring Dependency for Integration with Spring Framework -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version> <!-- Use the latest version -->
</dependency>
<!-- JDBC Driver for your Database (Example for MySQL) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
এখানে, MyBatis এবং MyBatis-Spring ইন্টিগ্রেশন ডিপেনডেন্সি ব্যবহার করা হয়েছে, যা Spring অ্যাপ্লিকেশনের মধ্যে iBATIS ব্যবহার করতে সহায়ক।
Step 2: iBATIS (MyBatis) Configuration File
iBATIS কনফিগারেশন ফাইল (mybatis-config.xml) তৈরি করতে হবে, যাতে ডেটাবেসের সাথে সংযোগ এবং অন্যান্য কনফিগারেশন সেট করা হয়।
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!-- Configuration for JDBC DataSource -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/yourdb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/yourdb"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</dataSource>
</environment>
</environments>
<!-- Enable caching -->
<settings>
<setting name="cacheEnabled" value="true"/>
</settings>
<!-- Configure mappers -->
<mappers>
<mapper resource="com/example/mapper/EmployeeMapper.xml"/>
</mappers>
</configuration>
এখানে:
- DataSource এবং TransactionManager কনফিগার করা হয়েছে, যা ডেটাবেস সংযোগ এবং ট্রানজ্যাকশন ম্যানেজমেন্ট করবে।
- Mapper-এর জন্য একটি XML ফাইল কনফিগার করা হয়েছে, যেখানে SQL কুয়েরি এবং মেপিং হবে।
Step 3: Create Mapper XML File
Mapper XML ফাইলে SQL কুয়েরি এবং ডেটা ম্যানিপুলেশন সংজ্ঞায়িত করা হয়। এই ফাইলে SQL কুয়েরি লেখার পাশাপাশি result mapping এবং parameter mapping সেট করা হয়।
EmployeeMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<mapper namespace="com.example.mapper.EmployeeMapper">
<!-- SQL Query for retrieving an employee by ID -->
<select id="getEmployeeById" resultType="com.example.model.Employee">
SELECT * FROM employees WHERE id = #{id}
</select>
<!-- SQL Query for inserting an employee -->
<insert id="insertEmployee" parameterType="com.example.model.Employee">
INSERT INTO employees (name, salary) VALUES (#{name}, #{salary})
</insert>
<!-- SQL Query for updating an employee -->
<update id="updateEmployee" parameterType="com.example.model.Employee">
UPDATE employees SET name = #{name}, salary = #{salary} WHERE id = #{id}
</update>
<!-- SQL Query for deleting an employee -->
<delete id="deleteEmployee" parameterType="int">
DELETE FROM employees WHERE id = #{id}
</delete>
</mapper>
এখানে, <select>, <insert>, <update>, এবং <delete> ট্যাগগুলি ব্যবহৃত হয়েছে। এগুলি আপনার SQL কুয়েরি এবং ডেটাবেস অপারেশন নির্ধারণ করবে। #{} ব্যবহার করে parameter binding করা হয়।
Step 4: Create Model Class
এখন আপনাকে একটি Model Class তৈরি করতে হবে, যা SQL কুয়েরির ফলাফল মডেল করবে এবং Mapper XML ফাইলের সাথে ম্যাপ হবে।
Employee.java
package com.example.model;
public class Employee {
private int id;
private String name;
private double salary;
// 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 double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
এখানে, Employee ক্লাসে ডেটাবেসের Employee টেবিলের জন্য প্যারামিটার সংজ্ঞায়িত করা হয়েছে।
Step 5: Use MyBatis in Your Application
এখন আপনার MyBatis কনফিগারেশন এবং মAPPER ফাইল ব্যবহার করে SQL session তৈরি করা যাবে এবং Employee ডেটাবেস থেকে ডেটা রিট্রিভ, আপডেট বা ডিলিট করা যাবে।
Main Application Example
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
public class Application {
public static void main(String[] args) throws Exception {
// Load MyBatis configuration
String resource = "mybatis-config.xml";
InputStream inputStream = Application.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// Open a session
try (SqlSession session = sqlSessionFactory.openSession()) {
// Retrieve an employee by ID
Employee employee = session.selectOne("com.example.mapper.EmployeeMapper.getEmployeeById", 1);
System.out.println(employee.getName());
// Insert a new employee
Employee newEmployee = new Employee();
newEmployee.setName("John Doe");
newEmployee.setSalary(50000);
session.insert("com.example.mapper.EmployeeMapper.insertEmployee", newEmployee);
session.commit();
// Update an existing employee
employee.setSalary(60000);
session.update("com.example.mapper.EmployeeMapper.updateEmployee", employee);
session.commit();
// Delete an employee
session.delete("com.example.mapper.EmployeeMapper.deleteEmployee", 1);
session.commit();
}
}
}
এখানে, SqlSessionFactory ব্যবহার করে MyBatis কনফিগারেশন লোড করা হচ্ছে এবং SQL কুয়েরি চালানোর জন্য SqlSession তৈরি করা হচ্ছে।
Step 6: Running the Application
আপনার অ্যাপ্লিকেশন রান করার পরে, EmployeeMapper.xml এর মাধ্যমে SQL কুয়েরি ইন্টারঅ্যাকশনের জন্য কনফিগার করা হবে এবং ডেটাবেসে ডেটা রিট্রিভ, ইনসার্ট, আপডেট বা ডিলিট করা হবে।
iBATIS (MyBatis) হল একটি শক্তিশালী এবং নমনীয় ডেটাবেস ইন্টারঅ্যাকশন ফ্রেমওয়ার্ক যা আপনাকে SQL কুয়েরির মাধ্যমে Java objects-এর সাথে ডেটাবেসের মধ্যে ম্যাপিং করতে সাহায্য করে। Maven ডিপেনডেন্সি, MyBatis Configuration File, Mapper XML, এবং Model Classes সহ iBATIS-এর সহজ ইন্সটলেশন এবং সেটআপ প্রক্রিয়া আপনাকে দ্রুত একটি ডেটাবেস ইন্টিগ্রেশন তৈরি করতে সাহায্য করে।
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 সেশনের মাধ্যমে ডেটাবেসের সাথে যোগাযোগ।
iBATIS (বর্তমানে MyBatis নামে পরিচিত) একটি জনপ্রিয় এবং শক্তিশালী Java persistence framework যা ডেটাবেসের সাথে সংযোগ এবং ডেটা ম্যানিপুলেশন সহজ করে। iBATIS / MyBatis হ্যান্ডল করে SQL স্টেটমেন্টগুলো এবং JDBC কোড লিখতে সাহায্য করে, এবং আপনি এটি ব্যবহার করতে পারেন জাভা কোডে SQL চালানোর জন্য।
Gradle হচ্ছে একটি জনপ্রিয় বিল্ড টুল যা প্রোজেক্ট ম্যানেজমেন্ট এবং ডিপেনডেন্সি ম্যানেজমেন্টকে সহজ করে তোলে। iBATIS/MyBatis এর জন্য Gradle কনফিগারেশন সেটআপ করা খুবই সহজ এবং দ্রুত।
এখানে, আমরা দেখাবো কিভাবে Gradle দিয়ে iBATIS (MyBatis) অন্তর্ভুক্ত করতে হয় এবং সঠিকভাবে সেটআপ করতে হয়।
Step 1: Gradle প্রোজেক্ট তৈরি করা
প্রথমে, একটি Gradle প্রোজেক্ট তৈরি করুন বা একটি বিদ্যমান প্রোজেক্টে iBATIS (MyBatis) অন্তর্ভুক্ত করুন। আপনি যদি নতুন প্রোজেক্ট তৈরি করেন, তবে build.gradle ফাইলটি সেটআপ করতে হবে।
build.gradle কনফিগারেশন:
Gradle প্রোজেক্টে iBATIS (MyBatis) অন্তর্ভুক্ত করতে, আপনাকে Gradle ডিপেনডেন্সি ব্লকে iBATIS বা MyBatis সম্পর্কিত লাইব্রেরি যুক্ত করতে হবে।
plugins {
id 'java'
id 'eclipse' // or 'idea' depending on your IDE
}
repositories {
mavenCentral()
}
dependencies {
// iBATIS / MyBatis Dependency
implementation 'org.mybatis:mybatis:3.5.10'
// JDBC driver (e.g., H2 for database)
implementation 'com.h2database:h2:1.4.200'
// If using MyBatis with Spring
implementation 'org.mybatis.spring:mybatis-spring:2.0.6'
// Logging (optional, for logging MyBatis operations)
implementation 'org.slf4j:slf4j-api:1.7.32'
implementation 'org.slf4j:slf4j-simple:1.7.32'
}
এখানে:
implementation 'org.mybatis:mybatis:3.5.10': এটি iBATIS (বর্তমানে MyBatis) এর মূল লাইব্রেরি ডিপেনডেন্সি।com.h2database:h2:1.4.200: এখানে H2 ডাটাবেসের ড্রাইভার যুক্ত করা হয়েছে (আপনার ব্যবহৃত ডাটাবেস অনুসারে এটি পরিবর্তন করতে পারেন)।
Additional Dependencies (Optional):
mybatis-spring: যদি আপনি Spring ব্যবহার করেন, তবে MyBatis এর Spring Integration লাইব্রেরি যুক্ত করতে পারেন।slf4j: MyBatis অপারেশন লগিং এর জন্য SLF4J যোগ করা।
Step 2: MyBatis কনফিগারেশন ফাইল তৈরি করা
MyBatis ব্যবহার করার জন্য একটি কনফিগারেশন ফাইল (mybatis-config.xml) তৈরি করতে হবে। এটি MyBatis এর কনফিগারেশন ধারণ করবে, যেমন ডাটাবেস কানেকশন, ট্রানজেকশন ম্যানেজমেন্ট, এবং মাইবেটিস সেশনের জন্য প্যারামিটার।
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>
<!-- MyBatis Settings -->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="cacheEnabled" value="false" />
</settings>
<!-- DataSource Configuration -->
<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>
<!-- Mapper Configuration -->
<mappers>
<mapper resource="com/example/mapper/EmployeeMapper.xml"/>
</mappers>
</configuration>
এখানে:
dataSource: ডাটাবেস সংযোগের জন্য H2 ডাটাবেসের ড্রাইভার এবং কানেকশন সেটআপ করা হয়েছে। এটি আপনার ডাটাবেসের জন্য পরিবর্তন করতে হবে।<mappers>: এখানেEmployeeMapper.xmlফাইলটি মাইবেটিস মেপারের জন্য একটি উদাহরণ।
Step 3: MyBatis Mapper ফাইল তৈরি করা
MyBatis Mapper ফাইল হল SQL স্টেটমেন্ট এবং তাদের মেপিং কনফিগারেশনের স্থান। এটি XML ফরম্যাটে লেখা হয় এবং আপনার জাভা অবজেক্টের সাথে SQL স্টেটমেন্টগুলো সংযুক্ত করতে ব্যবহৃত হয়।
EmployeeMapper.xml Example:
<?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 an employee by ID -->
<select id="getEmployeeById" resultType="com.example.model.Employee">
SELECT id, name, department
FROM employee
WHERE id = #{id}
</select>
<!-- SQL Query to insert a new employee -->
<insert id="insertEmployee" parameterType="com.example.model.Employee">
INSERT INTO employee (name, department)
VALUES (#{name}, #{department})
</insert>
</mapper>
এখানে:
<select>:getEmployeeByIdমেথডটিEmployeeঅবজেক্টকে SQL কুয়েরি থেকে রিটার্ন করে।<insert>:insertEmployeeমেথডটি নতুন কর্মচারী ডাটাবেসে সন্নিবেশ করে।
Step 4: Java Code to Use MyBatis
এখন, আপনি MyBatis সেশন ব্যবহার করে ডেটাবেসে কাজ করতে পারেন।
Java Class 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("/mybatis-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: MyBatis কনফিগারেশন থেকে একটিSqlSessionFactoryতৈরি করা হচ্ছে।SqlSession: এটি ব্যবহার করে আপনি MyBatis Mapper মেথডগুলির মাধ্যমে ডেটাবেসের সাথে যোগাযোগ করেন।mapper.getEmployeeById(1)এবংmapper.insertEmployee(newEmployee): MyBatis Mapper ফাইলের মেথডগুলিকে কল করা হচ্ছে।
Step 5: Build and Run the Project
Gradle দিয়ে প্রোজেক্টটি কম্পাইল এবং রান করার জন্য নিচের কমান্ডগুলি ব্যবহার করুন:
# Build the project
gradle build
# Run the project
gradle run
এটি আপনার প্রোজেক্টটি বিল্ড করবে এবং আপনার EmployeeApp রান করবে।
এখন আপনি জানেন কিভাবে Gradle দিয়ে iBATIS (MyBatis) অন্তর্ভুক্ত করতে হয় এবং সেটআপ করতে হয়। এই প্রক্রিয়াতে:
- Gradle Dependency: iBATIS (MyBatis) এর জন্য ডিপেনডেন্সি কনফিগারেশন।
- MyBatis Configuration:
mybatis-config.xmlফাইল সেটআপ। - Mapper File:
EmployeeMapper.xmlফাইল তৈরি করা, যেখানে SQL কুয়েরি এবং তাদের মেপিং করা হয়। - Java Integration: Java কোডে MyBatis সেশন ব্যবহারের মাধ্যমে SQL কুয়েরি চালানো।
এগুলি আপনাকে iBATIS (MyBatis) ব্যবহার করতে সহায়ক হবে, এবং আপনার ডেটাবেস ম্যানিপুলেশন আরও কার্যকরী এবং মডুলার করবে।
iBATIS (বর্তমানে MyBatis নামে পরিচিত) হল একটি জনপ্রিয় Persistence Framework যা JDBC এবং SQL ম্যাপিংয়ের জন্য ব্যবহার করা হয়। এটি Object-Relational Mapping (ORM) এর তুলনায় আরও সহজ, যেখানে ডেভেলপাররা SQL কুয়েরি সরাসরি লিখে কাজ করে। iBATIS বা MyBatis-এর সাথে প্রকল্প কনফিগারেশন করার জন্য কিছু ধাপ অনুসরণ করতে হয়।
এখানে iBATIS (MyBatis) এর জন্য প্রজেক্ট কনফিগারেশন সেটআপের বিস্তারিত ব্যাখ্যা দেওয়া হল Eclipse এবং IntelliJ IDEA তে।
1. iBATIS/MyBatis Project Setup in Eclipse
Step 1: Create a New Maven Project
Eclipse-এ একটি নতুন Maven Project তৈরি করুন, যা ডিপেনডেন্সি ম্যানেজমেন্টের জন্য Maven ব্যবহার করবে।
- Open Eclipse IDE.
- Go to File > New > Maven Project.
- Choose archetype for Maven (for example, maven-archetype-quickstart).
- Click Next and follow the prompts to create the Maven project.
Step 2: Add iBATIS (MyBatis) Dependencies to pom.xml
Maven ব্যবহার করার মাধ্যমে আপনি iBATIS বা MyBatis এর ডিপেনডেন্সি খুব সহজেই যোগ করতে পারেন।
<dependencies>
<!-- MyBatis (iBATIS) Core Dependency -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<!-- MyBatis-Spring Integration (optional) -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<!-- JDBC Driver (For example, MySQL) -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
<!-- Logging framework (optional, e.g., Log4j or SLF4J) -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
mybatisওmybatis-springডিপেনডেন্সি ব্যবহার করে আপনি iBATIS/MyBatis এবং Spring Integration যুক্ত করতে পারবেন (যদি Spring ব্যবহার করতে চান)।- JDBC Driver: আপনি যদি MySQL ব্যবহার করেন, তবে
mysql-connector-javaডিপেনডেন্সি যোগ করবেন।
Step 3: Configure mybatis-config.xml
mybatis-config.xml ফাইলটি iBATIS/MyBatis কনফিগারেশনের জন্য ব্যবহৃত হয়। এটি সাধারণত 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>
- DataSource Configuration: এই অংশে ডেটাবেসের জন্য JDBC কনফিগারেশন নির্ধারণ করা হয়, যেমন ড্রাইভার, URL, ইউজারনেম এবং পাসওয়ার্ড।
- Mapper Files: এখানে আপনি
EmployeeMapper.xmlঅথবা অন্যান্য মাপার ফাইল যুক্ত করবেন যেখানে SQL কুয়েরি লেখা থাকে।
Step 4: Create Mapper Interface
MyBatis-এ SQL কুয়েরি ব্যবস্থাপনা করার জন্য আপনাকে Mapper Interface তৈরি করতে হবে।
public interface EmployeeMapper {
// Define SQL operations
Employee getEmployeeById(int id);
void insertEmployee(Employee employee);
void updateEmployee(Employee employee);
void deleteEmployee(int id);
}
- এই ইন্টারফেসে আপনার ডেটাবেস অপারেশনগুলি নির্ধারণ করা হবে।
Step 5: Create Mapper XML File
এখন আপনাকে Mapper XML ফাইল তৈরি করতে হবে, যেখানে SQL কুয়েরি কোড থাকবে।
<mapper namespace="com.yourpackage.mapper.EmployeeMapper">
<!-- SQL Query for retrieving an Employee by ID -->
<select id="getEmployeeById" parameterType="int" resultType="Employee">
SELECT * FROM employees WHERE id = #{id}
</select>
<!-- SQL Query for inserting an Employee -->
<insert id="insertEmployee" parameterType="Employee">
INSERT INTO employees (name, email) VALUES (#{name}, #{email})
</insert>
<!-- SQL Query for updating an Employee -->
<update id="updateEmployee" parameterType="Employee">
UPDATE employees SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<!-- SQL Query for deleting an Employee -->
<delete id="deleteEmployee" parameterType="int">
DELETE FROM employees WHERE id = #{id}
</delete>
</mapper>
- এখানে
EmployeeMapper.xmlফাইলে SQL কুয়েরি গুলি লেখার মাধ্যমে MyBatis নিশ্চিত করবে যে এগুলি সঠিকভাবে ডেটাবেসে রান হবে।
Step 6: Create Main Application or Service
এখন, আপনি SqlSessionFactory তৈরি করে Mapper Interface এর সাহায্যে ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করতে পারবেন।
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisApp {
public static void main(String[] args) {
// Initialize SqlSessionFactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis-config.xml"));
// Open session
try (SqlSession session = sessionFactory.openSession()) {
// Get Mapper interface
EmployeeMapper employeeMapper = session.getMapper(EmployeeMapper.class);
// Execute queries
Employee employee = employeeMapper.getEmployeeById(1);
System.out.println(employee.getName());
// Close session
}
}
}
Step 7: Run the Project
- Run the Project: Eclipse থেকে আপনার প্রজেক্ট রান করুন এবং নিশ্চিত করুন যে ডেটাবেস কনফিগারেশন এবং SQL কুয়েরি সঠিকভাবে কাজ করছে।
- Test: MyBatis মাপার ফাইলের SQL কুয়েরি কার্যকরী হচ্ছে কিনা তা যাচাই করুন।
2. iBATIS/MyBatis Project Setup in IntelliJ IDEA
Step 1: Create a New Maven Project
- Open IntelliJ IDEA.
- Select New Project > Maven.
- Set GroupId, ArtifactId, and other details.
- Click Finish to create the Maven project.
Step 2: Add Dependencies to pom.xml
Add the same dependencies to your pom.xml as described in the Eclipse setup.
Step 3: Configure mybatis-config.xml
Place the mybatis-config.xml in src/main/resources folder.
Step 4: Create Mapper Interface and XML
Follow the same steps for creating Mapper Interface and Mapper XML as described for Eclipse.
Step 5: Create Service and Main Class
Create your Service class and a main class similar to what was described above.
Step 6: Run the Application
Once the project is complete, run the application by right-clicking the MyBatisApp class and selecting Run.
এখন আপনি Eclipse বা IntelliJ IDEA তে iBATIS (MyBatis) প্রজেক্ট কনফিগারেশন সঠিকভাবে সেটআপ করতে পারবেন। মেভেন ডিপেনডেন্সি ব্যবহারের মাধ্যমে iBATIS/MyBatis খুব সহজেই কনফিগার করা যায় এবং ডেটাবেসের সাথে ইন্টারঅ্যাকশন করার জন্য Mapper Interface ও XML Mapping ফাইল তৈরি করা যায়। এই প্রক্রিয়া অনুসরণ করে আপনি দ্রুত এবং কার্যকরীভাবে SQL কুয়েরি লিখে ডেটাবেস অপারেশন করতে পারবেন।
iBATIS (বর্তমানে MyBatis নামে পরিচিত) একটি ওপেন সোর্স Java persistence framework যা SQL এবং Java object-গুলির মধ্যে ম্যাপিং করতে ব্যবহৃত হয়। iBATIS SQL ম্যাপিং ব্যবস্থাপনা সহজ করে এবং আপনাকে SQL কোডকে Java কোডের সাথে একীভূত করতে সক্ষম করে। এটি Hibernate এর মতো ORM ফ্রেমওয়ার্কের তুলনায় অনেক বেশি কাস্টমাইজযোগ্য, কারণ এটি SQL-কে আলাদাভাবে পরিচালনা করতে দেয়।
iBATIS (MyBatis)-এর সাথে ডেটাবেস সংযোগ সেটআপ করার জন্য, কয়েকটি সাধারণ পদক্ষেপ রয়েছে, যেগুলি আপনাকে DataSource, SQL Session, এবং Configuration তৈরি করতে সাহায্য করবে। নিচে iBATIS Database Connection Setup এর স্টেপ-by-স্টেপ গাইড দেওয়া হলো:
1. iBATIS/MyBatis Dependency Setup
প্রথমে, আপনাকে Maven বা Gradle ব্যবহার করে iBATIS (MyBatis) ফ্রেমওয়ার্কের ডিপেন্ডেন্সি যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিচের ডিপেন্ডেন্সিটি যোগ করুন:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version> <!-- Use the latest version -->
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version> <!-- MySQL JDBC driver -->
</dependency>
এছাড়া, যদি Gradle ব্যবহার করেন, তাহলে ডিপেন্ডেন্সি হিসেবে নিচের কোডটি ব্যবহার করতে পারেন:
implementation 'org.mybatis:mybatis:3.5.6' // MyBatis dependency
implementation 'mysql:mysql-connector-java:8.0.23' // MySQL JDBC driver
2. Configure the SqlSessionFactory and DataSource
iBATIS-এ SqlSessionFactory তৈরি করার জন্য আপনাকে DataSource এবং Configuration কনফিগার করতে হবে। সাধারণত, SqlSessionFactory-এর জন্য XML Configuration ফাইল ব্যবহার করা হয় যা ডেটাবেস কনফিগারেশন এবং SQL ম্যাপিং ফাইলগুলো লোড করে।
a) Create mybatis-config.xml for Configuration:
<?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 database connection settings -->
<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_database_name"/>
<property name="username" value="your_database_username"/>
<property name="password" value="your_database_password"/>
</dataSource>
</environment>
</environments>
<!-- Mapper files -->
<mappers>
<mapper resource="com/example/mappers/StudentMapper.xml"/>
</mappers>
</configuration>
<dataSource type="POOLED">: এখানে আপনি POOLED ডেটাসোর্স ব্যবহার করছেন, যা JDBC কানেকশন পুলিং সক্ষম করে এবং ডেটাবেসের সাথে কার্যকর যোগাযোগ নিশ্চিত করে।<property name="driver" value="com.mysql.cj.jdbc.Driver"/>: এখানে ডেটাবেস ড্রাইভার উল্লেখ করা হয়েছে (এটা MySQL এর জন্য)।<property name="url" value="jdbc:mysql://localhost:3306/your_database_name"/>: এখানে ডেটাবেসের URL এবং অন্যান্য তথ্য উল্লেখ করতে হবে।<mappers>: আপনি যেসব SQL ম্যাপিং ফাইল ব্যবহার করবেন তা এখানে উল্লেখ করতে হবে।
b) Create SqlSessionFactory in Java:
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import java.io.InputStream;
import java.io.IOException;
public class MyBatisUtil {
private static SqlSessionFactory sessionFactory;
static {
try {
// Load MyBatis configuration file
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// Method to get a SqlSession
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}
এখানে, SqlSessionFactory তৈরি করার জন্য mybatis-config.xml ফাইলটি লোড করা হচ্ছে, এবং getSession() মেথডের মাধ্যমে SqlSession তৈরি করা হচ্ছে, যেটি ডেটাবেস অপারেশন পরিচালনা করতে সাহায্য করবে।
3. Create Mapper XML File
iBATIS (MyBatis)-এ SQL Queries সাধারণত Mapper XML ফাইলে সংরক্ষিত হয়। এখানে StudentMapper.xml নামের একটি উদাহরণ দেওয়া হলো, যেখানে select, insert, update, এবং delete অপারেশন করা হয়েছে।
Example: StudentMapper.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.mappers.StudentMapper">
<!-- Select Query for retrieving a Student by ID -->
<select id="selectStudent" resultType="com.example.Student">
SELECT * FROM student WHERE id = #{id}
</select>
<!-- Insert Query for adding a new student -->
<insert id="insertStudent" parameterType="com.example.Student">
INSERT INTO student (name, course) VALUES (#{name}, #{course})
</insert>
<!-- Update Query for updating student details -->
<update id="updateStudent" parameterType="com.example.Student">
UPDATE student SET name = #{name}, course = #{course} WHERE id = #{id}
</update>
<!-- Delete Query for deleting a student -->
<delete id="deleteStudent" parameterType="int">
DELETE FROM student WHERE id = #{id}
</delete>
</mapper>
Explanation:
<select>: SQL SELECT কোয়েরি যাStudentঅবজেক্ট লোড করবে।<insert>: SQL INSERT কোয়েরি, যা একটি নতুন ছাত্র ইনসার্ট করবে।<update>: SQL UPDATE কোয়েরি, যা ছাত্রের তথ্য আপডেট করবে।<delete>: SQL DELETE কোয়েরি, যা ছাত্র মুছে ফেলবে।
4. Interact with the Database
ম্যাপার ফাইল কনফিগার করার পর, Java ক্লাসে SqlSession ব্যবহার করে ডেটাবেস অপারেশন চালানো হয়।
Example: Interacting with Database (Student DAO)
import org.apache.ibatis.session.SqlSession;
import com.example.Student;
import com.example.mappers.StudentMapper;
public class StudentDAO {
public void saveStudent(Student student) {
try (SqlSession session = MyBatisUtil.getSession()) {
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.insertStudent(student); // Calling insert operation
session.commit(); // Commit the transaction
}
}
public Student getStudentById(int id) {
try (SqlSession session = MyBatisUtil.getSession()) {
StudentMapper mapper = session.getMapper(StudentMapper.class);
return mapper.selectStudent(id); // Calling select operation
}
}
}
Explanation:
getMapper(): এটি SQL কোয়েরি চালানোর জন্য উপযুক্ত mapper ইন্টারফেসের একটি ইনস্ট্যান্স রিটার্ন করে।commit(): ডেটাবেসে করা পরিবর্তনগুলো সেভ করতে commit() মেথড কল করা হয়।
5. Using Transactions in iBATIS
iBATIS (MyBatis) এ ট্রানজেকশন ব্যবস্থাপনা সেশন (Session) এর মাধ্যমে পরিচালিত হয়। আপনি commit() এবং rollback() মেথড ব্যবহার করে ট্রানজেকশন ম্যানেজ করতে পারেন।
Example: Using Transactions
public void updateStudent(Student student) {
SqlSession session = MyBatisUtil.getSession();
try {
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.updateStudent(student);
session.commit(); // Commit the transaction
} catch (Exception e) {
session.rollback(); // Rollback in case of error
e.printStackTrace();
} finally {
session.close();
}
}
iBATIS (MyBatis) হল একটি শক্তিশালী এবং নমনীয় পদ্ধতি যা Java অ্যাপ্লিকেশনকে ডেটাবেসের সাথে সংযোগ করতে এবং SQL কোয়েরি চালাতে সহায়তা করে। iBATIS Database Connection Setup সাধারণত SqlSessionFactory, DataSource, এবং Mapper কনফিগারেশন ব্যবহার করে করা হয়। এটি ডেটাবেস অ্যাক্সেস সহজ করে, এবং SQL কোয়েরি এবং Java objects-এর মধ্যে একটি কার্যকর সম্পর্ক স্থাপন করে।
Read more