iBATIS (বর্তমানে MyBatis নামে পরিচিত) একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশনগুলোকে ডেটাবেসের সাথে সহজে সংযুক্ত করতে সাহায্য করে। iBATIS-এর সাথে ডেটাবেস সংযোগ সঠিকভাবে কনফিগার করার জন্য আপনাকে Environment এবং DataSource কনফিগার করতে হবে। Environment-এর মাধ্যমে আপনি ডেটাবেস পরিবেশ এবং ট্রানজেকশন ম্যানেজার কনফিগার করেন, আর DataSource ব্যবহার করে ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়।
এখানে, iBATIS Environment এবং DataSource কনফিগার করার বিস্তারিত পদক্ষেপ আলোচনা করা হবে।
1. iBATIS Environment Configuration
iBATIS (MyBatis) এ Environment কনফিগারেশন ডেটাবেসের সাথে সংযোগের জন্য একটি নির্দিষ্ট পরিবেশ সংজ্ঞায়িত করে। এটি Transaction Manager, DataSource, এবং Connection Pooling কনফিগারেশন ধারণ করে।
a) Create mybatis-config.xml for Environment Configuration:
mybatis-config.xml ফাইলে আপনি Environment কনফিগার করতে পারেন, যেখানে ডেটাবেস সংযোগের জন্য DataSource এবং ট্রানজেকশন ম্যানেজার উল্লেখ করা হবে।
<?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>
<!-- Environments Configuration -->
<environments default="development">
<environment id="development">
<!-- Transaction Manager Configuration -->
<transactionManager type="JDBC"/>
<!-- DataSource Configuration -->
<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>
Explanation:
<environments>: এটি ডেটাবেসের সাথে সংযোগের জন্য বিভিন্ন পরিবেশ কনফিগার করতে ব্যবহৃত হয়। এখানেdefault="development"সেট করা হয়েছে, অর্থাৎ "development" পরিবেশের কনফিগারেশনটি ব্যবহার করা হবে।<transactionManager type="JDBC"/>: এখানে JDBC ট্রানজেকশন ম্যানেজার ব্যবহার করা হয়েছে, যা ডেটাবেসে commit এবং rollback অপারেশন পরিচালনা করে।<dataSource type="POOLED">: এটি POOLED টাইপের ডেটাসোর্স নির্দেশ করে, যেখানে কানেকশন পুলিং সক্রিয় থাকে এবং ডেটাবেসে বহু সংযোগ পুনঃব্যবহার করা হয়।
2. iBATIS DataSource Configuration
DataSource কনফিগারেশনটি হল সেই সেটিংস যা ডেটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত হয়। iBATIS এ আপনি সাধারণত POOLED টাইপের DataSource ব্যবহার করেন, যা কানেকশন পুলিং ম্যানেজ করে। এই পদ্ধতির মাধ্যমে একাধিক ডেটাবেস সংযোগ তৈরি করা হয়, এবং একবার ব্যবহৃত হলে সেই কানেকশনটি পুনরায় ব্যবহার করা যায়, যা পারফরম্যান্স উন্নত করে।
Types of DataSource in iBATIS:
- POOLED: ডেটাবেস কানেকশন পুলিং ব্যবহার করে, যেখানে একটি সীমিত সংখ্যা কানেকশন পুনঃব্যবহার করা হয়।
- UNPOOLED: এটি একটি সহজ ডেটাবেস সংযোগ সরবরাহ করে যেখানে কোন কানেকশন পুলিং ব্যবহৃত হয় না।
- JNDI: JNDI (Java Naming and Directory Interface) এর মাধ্যমে ডেটাবেস সংযোগ কনফিগার করা হয়।
a) Pooled DataSource Example:
<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>
type="POOLED": এই ধরনের DataSource কানেকশন পুলিং সক্ষম করে, যা একাধিক কানেকশন পুনঃব্যবহার করতে পারে।property: এখানে ডেটাবেসের URL, username, এবং password উল্লেখ করা হয়েছে।
b) Unpooled DataSource Example:
<dataSource type="UNPOOLED">
<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>
type="UNPOOLED": এই ধরনের DataSource ব্যবহার করলে প্রতিটি ডেটাবেস অপারেশনের জন্য একটি নতুন কানেকশন তৈরি হয়।
c) JNDI DataSource Example:
<dataSource type="JNDI">
<property name="jndiName" value="java:/comp/env/jdbc/MyDataSource"/>
</dataSource>
type="JNDI": যদি আপনি JNDI ব্যবহার করতে চান, তবে এখানে JNDI নাম উল্লেখ করতে হয়, যা আপনার অ্যাপ্লিকেশন সার্ভারে কনফিগার করা থাকবে।
3. Using iBATIS in Java Code
পরিবেশ কনফিগার করার পর, আপনাকে Java কোডে SqlSessionFactory এবং SqlSession তৈরি করতে হবে। এটি ডেটাবেসের সাথে সংযোগ স্থাপন করে এবং SQL ম্যাপিং এর মাধ্যমে অপারেশন সম্পাদন করবে।
Create SqlSessionFactory and SqlSession:
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import java.io.InputStream;
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 (Exception e) {
e.printStackTrace();
}
}
// Method to get a SqlSession
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}
Explanation:
SqlSessionFactory: এটি MyBatis থেকে SQL সেশন তৈরি করার জন্য ব্যবহৃত হয়।Resources.getResourceAsStream("mybatis-config.xml"): এটি mybatis-config.xml কনফিগারেশন ফাইলটি লোড করে।sessionFactory.openSession(): এটি একটি নতুন সেশন তৈরি করে, যা ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করবে।
4. Sample SQL Mapper for iBATIS
iBATIS এ SQL কুয়েরি এবং ডেটা অপারেশনগুলি mapper XML ফাইলে সংরক্ষিত হয়। এই ফাইলগুলি SQL কুয়েরি এবং Java অবজেক্টের মধ্যে ম্যাপিং কাজ করে।
Example of Mapper XML (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>
5. Using the Mapper in Java Code
Java ক্লাসে Mapper Interface তৈরি করতে হবে, যা SQL অপারেশনগুলোকে Java কোডের মাধ্যমে কল করতে সাহায্য করবে।
Example of Mapper Interface:
package com.example.mappers;
import com.example.Student;
public interface StudentMapper {
Student selectStudent(int id);
void insertStudent(Student student);
void updateStudent(Student student);
void deleteStudent(int id);
}
Calling the Mapper from Java Code:
import org.apache.ibatis.session.SqlSession;
public class StudentDAO {
public void saveStudent(Student student) {
try (SqlSession session = MyBatisUtil.getSession()) {
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.insertStudent(student);
session.commit();
}
}
public Student getStudentById(int id) {
try (SqlSession session = MyBatisUtil.getSession()) {
StudentMapper mapper = session.getMapper(StudentMapper.class);
return mapper.selectStudent(id);
}
}
}
iBATIS (MyBatis) একটি শক্তিশালী Java persistence framework যা SQL এবং Java objects-এর মধ্যে একটি ম্যাপিং তৈরি করে। Environment এবং DataSource কনফিগার করার মাধ্যমে ডেটাবেস সংযোগ সেটআপ করতে হবে, এবং SQL Mapper ফাইলগুলির মাধ্যমে SQL কোয়েরি পরিচালনা করতে হবে। এই কৌশলগুলি ব্যবহার করে আপনি Hibernate এর তুলনায় আরও কাস্টমাইজড এবং উন্নত পদ্ধতিতে ডেটাবেস অপারেশন পরিচালনা করতে পারবেন।
Read more