Hibernate একটি জনপ্রিয় Object-Relational Mapping (ORM) ফ্রেমওয়ার্ক, যা জাভা অ্যাপ্লিকেশনগুলির জন্য ডেটাবেসে ডেটা সংরক্ষণ এবং পরিচালনা করার কাজ সহজ করে তোলে। Hibernate ব্যবহার করে, ডেটাবেসের টেবিলগুলিকে জাভা অবজেক্টে রূপান্তর (অথবা ম্যাপ) করা হয় এবং SQL কোড লেখা ছাড়াই ডেটাবেস অপারেশন করা যায়।
এই গাইডে আমরা দেখব কীভাবে Hibernate ফ্রেমওয়ার্কের সাথে MySQL ডেটাবেস একত্রিত করতে হয় এবং কীভাবে Hibernate ব্যবহার করে ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন করা যায়।
১. Hibernate ফ্রেমওয়ার্ক এবং MySQL ডেটাবেসের জন্য প্রয়োজনীয় লাইব্রেরি
Hibernate ব্যবহার করতে হলে, Hibernate এবং MySQL JDBC ড্রাইভারসহ কিছু নির্দিষ্ট লাইব্রেরি আপনার প্রোজেক্টে যুক্ত করতে হবে।
Maven Dependencies:
<dependencies>
<!-- Hibernate Core Dependency -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.10.Final</version>
</dependency>
<!-- MySQL JDBC Driver Dependency -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- JPA (Java Persistence API) Dependency -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<!-- Hibernate Validator (Optional for Validation) -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.5.Final</version>
</dependency>
</dependencies>
২. Hibernate Configuration (hibernate.cfg.xml)
Hibernate কনফিগার করার জন্য একটি কনফিগারেশন ফাইল প্রয়োজন, যা hibernate.cfg.xml নামে প্রোজেক্টের src/main/resources ফোল্ডারে রাখা হয়। এই ফাইলে ডেটাবেস কনফিগারেশন, ড্রাইভার, ডেটাবেস URL, ইউজারনেম এবং পাসওয়ার্ড উল্লেখ করা হয়।
উদাহরণ: hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- JDBC Database connection settings -->
<property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydatabase</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">password</property>
<!-- JDBC connection pool settings -->
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">300</property>
<property name="hibernate.c3p0.max_statements">50</property>
<property name="hibernate.c3p0.idle_test_period">3000</property>
<!-- Specify dialect -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- Echo all executed SQL to stdout -->
<property name="hibernate.show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="hibernate.c3p0.idle_test_period">3000</property>
</session-factory>
</hibernate-configuration>
- hibernate.connection.url: MySQL ডেটাবেসের URL।
- hibernate.connection.username: ডেটাবেস ইউজারনেম।
- hibernate.connection.password: ডেটাবেস পাসওয়ার্ড।
- hibernate.dialect: MySQL এর জন্য Hibernate ডায়ালেক্ট।
- hibernate.hbm2ddl.auto: এটি
updateথাকলে Hibernate স্কিমা অটোমেটিক্যালি আপডেট করবে।
৩. Hibernate Entity (Java Class)
Hibernate Entity হল একটি জাভা ক্লাস যা ডেটাবেস টেবিলের সাথে ম্যাপ করা হয়। এর জন্য @Entity অ্যানোটেশন এবং @Table অ্যানোটেশন ব্যবহার করা হয়।
উদাহরণ: User Entity Class
import javax.persistence.*;
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
// 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 String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
এখানে, User ক্লাসটি users টেবিলের সাথে সম্পর্কিত। @Id অ্যানোটেশন দিয়ে id কলামটিকে প্রাইমারি কী হিসেবে চিহ্নিত করা হয়েছে এবং @GeneratedValue দিয়ে অটোমেটিক্যালি মান জেনারেট করার জন্য নির্দেশ দেওয়া হয়েছে।
৪. Hibernate Utility Class (SessionFactory)
Hibernate-এর সাথে কাজ করার জন্য SessionFactory তৈরি করা প্রয়োজন। এটি Hibernate কনফিগারেশন ফাইলের মাধ্যমে ডেটাবেসের সাথে সংযোগ স্থাপন করে এবং Session অবজেক্ট তৈরি করে, যা ডেটাবেস অপারেশন পরিচালনা করতে ব্যবহৃত হয়।
উদাহরণ: HibernateUtil Class
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sessionFactory;
static {
try {
sessionFactory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(User.class).buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
এখানে SessionFactory Hibernate কনফিগারেশন ফাইল এবং User ক্লাস (যা Entity হিসাবে কাজ করছে) ব্যবহার করে তৈরি করা হয়েছে।
৫. CRUD অপারেশন
Hibernate ব্যবহার করে Create, Read, Update, Delete (CRUD) অপারেশন করা যায়।
উদাহরণ: CRUD অপারেশন
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class UserDAO {
// Create User
public void createUser(User user) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
session.save(user);
transaction.commit();
}
// Read User
public User getUser(int userId) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, userId);
transaction.commit();
return user;
}
// Update User
public void updateUser(User user) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
session.update(user);
transaction.commit();
}
// Delete User
public void deleteUser(int userId) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction transaction = session.beginTransaction();
User user = session.get(User.class, userId);
if (user != null) {
session.delete(user);
}
transaction.commit();
}
}
এখানে UserDAO ক্লাসটি CRUD অপারেশন পরিচালনা করছে:
createUser(): নতুন ইউজার তৈরি করছে।getUser(): ইউজারের তথ্য পড়ছে।updateUser(): ইউজারের তথ্য আপডেট করছে।deleteUser(): ইউজার মুছে ফেলছে।
৬. Hibernate Session ব্যবহার
Hibernate ডেটাবেসে CRUD অপারেশন করার জন্য Session অবজেক্ট ব্যবহৃত হয়। Session হল Hibernate ফ্রেমওয়ার্কের প্রধান কম্পোনেন্ট যা ডেটাবেসের সাথে যোগাযোগ করে।
সারাংশ
Hibernate ফ্রেমওয়ার্কটি Java অ্যাপ্লিকেশনগুলির জন্য MySQL ডেটাবেসে CRUD অপ
Read more