উদাহরণ সহ Entity Mapping

Spring ORM এ Entity Mapping - স্প্রিং ওআরএম (Spring ORM) - Java Technologies

251

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 প্রজেক্টে কার্যকরভাবে ডাটাবেস সম্পর্ক তৈরি করতে ব্যবহৃত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...