স্প্রিং ওআরএম ব্যবহার করে Java Persistence API (JPA) এবং Hibernate এর মাধ্যমে ডাটাবেসে সম্পর্ক (Relationships) মডেল করা সম্ভব। এখানে One-to-One, One-to-Many, এবং Many-to-Many সম্পর্ক ব্যাখ্যা করা হলো।
One-to-One Relationship
একটি টেবিলের একটি রেকর্ড আরেকটি টেবিলের মাত্র একটি রেকর্ডের সাথে সম্পর্কিত হলে এটি One-to-One সম্পর্ক।
উদাহরণ
প্রতিটি ব্যবহারকারীর (User) একটি অ্যাড্রেস (Address) থাকতে পারে।
Entity ক্লাস
import jakarta.persistence.*;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_id", referencedColumnName = "id")
private Address address;
// Getters and Setters
}
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String street;
private String city;
// Getters and Setters
}
Key Points:
@OneToOne: সম্পর্ক নির্দেশ করে।@JoinColumn:address_idকলাম দিয়ে দুটি টেবিল লিঙ্ক করে।
One-to-Many Relationship
একটি টেবিলের একটি রেকর্ড আরেকটি টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কিত হলে এটি One-to-Many সম্পর্ক।
উদাহরণ
একটি ক্যাটেগরির (Category) একাধিক প্রোডাক্ট (Product) থাকতে পারে।
Entity ক্লাস
import jakarta.persistence.*;
import java.util.List;
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "category", cascade = CascadeType.ALL)
private List<Product> products;
// Getters and Setters
}
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "category_id")
private Category category;
// Getters and Setters
}
Key Points:
@OneToMany: একাধিক সম্পর্ক নির্দেশ করে।@ManyToOne: বিপরীত সম্পর্ক নির্দেশ করে।mappedBy: মূল সম্পর্কের ফিল্ডের নাম দেখায়।
Many-to-Many Relationship
দুটি টেবিলের একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত হলে এটি Many-to-Many সম্পর্ক।
উদাহরণ
একটি শিক্ষার্থী (Student) একাধিক কোর্স (Course) নিতে পারে এবং একটি কোর্সে একাধিক শিক্ষার্থী থাকতে পারে।
Entity ক্লাস
import jakarta.persistence.*;
import java.util.List;
@Entity
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToMany
@JoinTable(
name = "student_course",
joinColumns = @JoinColumn(name = "student_id"),
inverseJoinColumns = @JoinColumn(name = "course_id")
)
private List<Course> courses;
// Getters and Setters
}
@Entity
public class Course {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
@ManyToMany(mappedBy = "courses")
private List<Student> students;
// Getters and Setters
}
Key Points:
@ManyToMany: সম্পর্ক নির্দেশ করে।@JoinTable: মধ্যবর্তী টেবিলের নাম এবং কলাম নির্ধারণ করে।inverseJoinColumns: বিপরীত দিকের টেবিলের কলাম নির্ধারণ করে।
সারাংশ
- One-to-One: দুই টেবিলের একটি রেকর্ড একটি রেকর্ডের সাথে সম্পর্কিত।
- One-to-Many: একটি রেকর্ড একাধিক রেকর্ডের সাথে সম্পর্কিত।
- Many-to-Many: দুই টেবিলের একাধিক রেকর্ড একে অপরের সাথে সম্পর্কিত।
এই সম্পর্কগুলো স্প্রিং ওআরএম এবং Hibernate এর মাধ্যমে ডেটাবেস মডেলিং সহজ করে।
Read more