Entity Mapping হলো ORM (Object Relational Mapping) এর একটি গুরুত্বপূর্ণ দিক, যা ডাটাবেজ টেবিল এবং Java ক্লাসের মধ্যে সম্পর্ক নির্ধারণ করে। Spring ORM এর মাধ্যমে Hibernate ব্যবহার করে সহজেই Entity Mapping করা যায়।
Entity Mapping প্রকারভেদ
১. Single Table Mapping
একটি Java ক্লাস সরাসরি একটি টেবিলের সঙ্গে যুক্ত থাকে।
২. Relationship Mapping
- One-to-One: একটি Entity অন্য একটি Entity এর সাথে ১:১ সম্পর্ক তৈরি করে।
- One-to-Many: একটি Entity অন্য Entity এর সাথে ১ থেকে অনেক সম্পর্ক তৈরি করে।
- Many-to-Many: দুই Entity এর মধ্যে অনেক থেকে অনেক সম্পর্ক তৈরি করে।
উদাহরণ সহ Entity Mapping
এখানে আমরা একাধিক ধরণের Entity Mapping এর উদাহরণ দেখাবো।
Single Table Mapping
একটি Java ক্লাসের সাথে একটি ডাটাবেজ টেবিলকে ম্যাপ করা হবে।
Employee.java
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@Entity
public class Employee {
@Id
private int id;
private String name;
private String department;
// 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;
}
}
Hibernate এই Entity কে ডাটাবেজের একটি টেবিলের সাথে যুক্ত করে এবং ডাটাবেসে Employee টেবিল তৈরি করে।
One-to-One Mapping
একটি Entity অন্য একটি Entity এর সাথে ১:১ সম্পর্ক তৈরি করবে।
Employee.java
import jakarta.persistence.*;
@Entity
public class Employee {
@Id
private int id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_id")
private Address address;
// 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 Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
}
Address.java
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
@Entity
public class Address {
@Id
private int id;
private String city;
private String country;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
}
One-to-Many Mapping
একটি Entity একাধিক Entity এর সাথে সম্পর্ক তৈরি করবে।
Department.java
import jakarta.persistence.*;
import java.util.List;
@Entity
public class Department {
@Id
private int id;
private String name;
@OneToMany(mappedBy = "department", cascade = CascadeType.ALL)
private List<Employee> employees;
// 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 List<Employee> getEmployees() {
return employees;
}
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
}
Employee.java
import jakarta.persistence.*;
@Entity
public class Employee {
@Id
private int id;
private String name;
@ManyToOne
@JoinColumn(name = "department_id")
private Department department;
// 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 Department getDepartment() {
return department;
}
public void setDepartment(Department department) {
this.department = department;
}
}
Many-to-Many Mapping
দুই Entity একে অপরের সাথে অনেক থেকে অনেক সম্পর্ক তৈরি করবে।
Student.java
import jakarta.persistence.*;
import java.util.List;
@Entity
public class Student {
@Id
private int id;
private String name;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id")
)
private List<Course> courses;
// 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 List<Course> getCourses() {
return courses;
}
public void setCourses(List<Course> courses) {
this.courses = courses;
}
}
Course.java
import jakarta.persistence.*;
import java.util.List;
@Entity
public class Course {
@Id
private int id;
private String title;
@ManyToMany(mappedBy = "courses")
private List<Student> students;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<Student> getStudents() {
return students;
}
public void setStudents(List<Student> students) {
this.students = students;
}
}
এসব Entity Mapping Hibernate এবং Spring ORM ব্যবহার করে Java প্রজেক্টে কার্যকরভাবে ডাটাবেস সম্পর্ক তৈরি করতে ব্যবহৃত হয়।
Read more