Hibernate হল একটি Object-Relational Mapping (ORM) ফ্রেমওয়ার্ক, যা Java objects এবং relational databases এর মধ্যে সম্পর্ক স্থাপন করতে সাহায্য করে। Hibernate-এ একটি Entity Class তৈরি করার মাধ্যমে, আপনি Java objects কে database tables এর সাথে ম্যাপ করতে পারেন।
Hibernate Entity Class তৈরি করার জন্য কিছু নির্দিষ্ট annotations (যেমন @Entity, @Id, @GeneratedValue, @Column) ব্যবহার করতে হয়। এই Entity ক্লাসে Java objects এবং database tables এর মধ্যে সম্পর্ক নির্ধারণ করা হয়।
Hibernate Entity Class তৈরি করার ধাপ
ধাপ 1: Entity Class তৈরি করুন
এখানে আমরা একটি Employee ক্লাস তৈরি করব যা Hibernate Entity হিসেবে কাজ করবে। এই ক্লাসটি ডেটাবেসের employee টেবিলের সাথে সম্পর্কিত হবে।
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Column;
@Entity // Mark this class as an Entity to be mapped to a table
@Table(name = "employee") // Specifies the table name in the database
public class Employee {
@Id // Marks the primary key of the table
@GeneratedValue(strategy = GenerationType.IDENTITY) // Auto-generate the ID for new records
private int id;
@Column(name = "name") // Maps the 'name' column to the 'name' attribute
private String name;
@Column(name = "department") // Maps the 'department' column to the 'department' attribute
private String department;
@Column(name = "salary") // Maps the 'salary' column to the 'salary' attribute
private double salary;
// Default constructor
public Employee() {}
// Constructor with all fields
public Employee(String name, String department, double salary) {
this.name = name;
this.department = department;
this.salary = 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 String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}
Explanation:
@Entity: এই অ্যানোটেশনটি Hibernate কে জানিয়ে দেয় যে এই ক্লাসটি একটি Entity এবং এটি ডেটাবেসের একটি টেবিলের সাথে ম্যাপ হবে।@Table(name = "employee"): এটি ডেটাবেসের টেবিলের নাম সুনির্দিষ্ট করে দেয় (যদি ডিফল্ট নামটি ব্যবহার না করতে চান)।@Id: এটি primary key (অথবা unique identifier) হিসেবে নির্ধারণ করে।@GeneratedValue(strategy = GenerationType.IDENTITY): এটি Hibernate কে বলে যে, primary key (id) ফিল্ডটি auto-generated হবে (অথবা auto-increment)।@Column(name = "name"): এই অ্যানোটেশনটি ডেটাবেসের সঠিক কলামের সাথে Java field কে ম্যাপ করতে সাহায্য করে।
ধাপ 2: Hibernate Configuration ফাইল তৈরি করুন
Hibernate Entity ক্লাস কাজ করার জন্য আপনাকে Hibernate Configuration file তৈরি করতে হবে। এই কনফিগারেশন ফাইলে ডেটাবেস সংযোগ এবং অন্যান্য সেটিংস নির্ধারণ করা হয়। সাধারণত এই ফাইলের নাম 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 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>
<!-- Specify dialect -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="hibernate.current_session_context_class">thread</property>
<!-- Show SQL -->
<property name="hibernate.show_sql">true</property>
<!-- Drop and re-create the database schema on startup -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- Mention annotated class -->
<mapping class="com.example.model.Employee"/>
</session-factory>
</hibernate-configuration>
Explanation of Configuration:
hibernate.connection.driver_class: JDBC ড্রাইভার ক্লাস।hibernate.connection.url: ডেটাবেসের URL।hibernate.connection.usernameএবংhibernate.connection.password: ডেটাবেসের ইউজারনেম এবং পাসওয়ার্ড।hibernate.dialect: Hibernate কে ডেটাবেসের ডায়ালেক্ট জানায় (এখানে MySQL ব্যবহার করা হয়েছে)।hibernate.hbm2ddl.auto: ডেটাবেস স্কিমা তৈরি বা আপডেট করার জন্যupdateসেট করা হয়েছে, যা ডেটাবেস স্কিমা আপডেট করবে।
ধাপ 3: Hibernate Session ব্যবহার করে ডেটাবেস অপারেশন
Hibernate Entity ক্লাসের মাধ্যমে ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন করতে হলে আপনাকে Session ব্যবহার করতে হবে। Session হল Hibernate-এর একটি API যা ডেটাবেসের সাথে transactions পরিচালনা করে।
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateApp {
public static void main(String[] args) {
// Create SessionFactory
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(Employee.class).buildSessionFactory();
// Create session
Session session = factory.getCurrentSession();
try {
// Create a new Employee object
Employee employee = new Employee("John", "IT", 5000);
// Start a transaction
session.beginTransaction();
// Save the employee object
session.save(employee);
// Commit the transaction
session.getTransaction().commit();
System.out.println("Employee saved with id: " + employee.getId());
} finally {
factory.close();
}
}
}
Explanation:
- SessionFactory: Hibernate
SessionFactoryতৈরি করে, যা Hibernate configuration file থেকে কনফিগারেশন লোড করে এবংEmployeeEntity ক্লাসকে ম্যাপ করে। - Session:
Sessionব্যবহার করে ডেটাবেসে ট্রানজেকশন শুরু এবং শেষ করা হয়। - Save():
session.save()মেথডের মাধ্যমে Employee অবজেক্ট ডেটাবেসে সেভ করা হয়।
- Hibernate Entity Class হল একটি POJO (Plain Old Java Object) ক্লাস যা annotations বা XML ফাইল ব্যবহার করে ডেটাবেস টেবিলের সাথে সম্পর্কিত হয়।
- Hibernate-এ Entity Class তৈরি করার জন্য
@Entity,@Id,@Columnইত্যাদি অ্যানোটেশন ব্যবহার করা হয়। - Hibernate automatic mapping প্রদান করে, যাতে আপনি Java objects এবং database tables এর মধ্যে সম্পর্ক তৈরি করতে পারেন।
- Hibernate ব্যবহার করার মাধ্যমে SQL কোডের সংখ্যা কমে যায় এবং আপনি object-oriented স্টাইলে ডেটাবেসের সাথে কাজ করতে পারেন।
Read more