Hibernate হল একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা ডেটাবেস টেবিলগুলির মধ্যে সম্পর্ক পরিচালনা করার জন্য annotations এবং entity mappings ব্যবহার করে। Hibernate এর মাধ্যমে entity relationships যেমন @OneToOne, @OneToMany, @ManyToOne, এবং @ManyToMany সম্পর্কগুলি খুব সহজে নির্ধারণ করা যেতে পারে।
এগুলি হল Hibernate এর কিছু গুরুত্বপূর্ণ অ্যাসোসিয়েশন অ্যানোটেশন যা object-oriented রিলেশন তৈরি করতে সাহায্য করে। এখানে আমরা প্রতিটি সম্পর্কের ব্যাখ্যা এবং উদাহরণ দেখব।
1. @OneToOne Relationship
@OneToOne সম্পর্ক তখন ব্যবহার হয় যখন একটি entity অন্য একটি entity এর সাথে একে অপরের সাথে একক সম্পর্ক স্থাপন করে। এই সম্পর্কটি primary key এর মাধ্যমে foreign key সম্পর্ক তৈরি করে। উদাহরণস্বরূপ, একজন ব্যক্তি একাধিক ব্যক্তিগত অ্যাড্রেসের পরিবর্তে একটি একক অ্যাড্রেস পেতে পারে।
@OneToOne উদাহরণ:
Person.java (One-to-One):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
@Entity
public class Person {
@Id
private int id;
private String name;
@OneToOne
private Address address;
// Constructors, getters, and setters
public Person() {}
public Person(int id, String name, Address address) {
this.id = id;
this.name = name;
this.address = address;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
// Other getters and setters
}
Address.java (One-to-One):
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Address {
@Id
private int id;
private String street;
// Constructors, getters, and setters
public Address() {}
public Address(int id, String street) {
this.id = id;
this.street = street;
}
// Getters and setters
}
ব্যাখ্যা:
- @OneToOne:
PersonএবংAddressএর মধ্যে একে অপরের সাথে একক সম্পর্ক স্থাপন করা হয়েছে। - Person Entity ক্লাসের মধ্যে একটি
Addressঅবজেক্ট রয়েছে, যা একটি একক Address এর সাথে সম্পর্কিত।
2. @OneToMany Relationship
@OneToMany সম্পর্ক তখন ব্যবহার হয় যখন একটি entity একাধিক entity এর সাথে সম্পর্কিত থাকে। এই সম্পর্কটি ডেটাবেসের one-to-many রিলেশন তৈরি করে। উদাহরণস্বরূপ, একজন Author একাধিক Book এর সাথে সম্পর্কিত হতে পারে।
@OneToMany উদাহরণ:
Author.java (One-to-Many):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import java.util.Set;
@Entity
public class Author {
@Id
private int id;
private String name;
@OneToMany(mappedBy = "author")
private Set<Book> books;
// Constructors, getters, and setters
public Author() {}
public Author(int id, String name) {
this.id = id;
this.name = name;
}
public Set<Book> getBooks() {
return books;
}
public void setBooks(Set<Book> books) {
this.books = books;
}
// Other getters and setters
}
Book.java (Many-to-One):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Book {
@Id
private int id;
private String title;
@ManyToOne
private Author author;
// Constructors, getters, and setters
public Book() {}
public Book(int id, String title, Author author) {
this.id = id;
this.title = title;
this.author = author;
}
// Other getters and setters
}
ব্যাখ্যা:
- @OneToMany:
AuthorEntity ক্লাসে One-to-Many সম্পর্ক স্থাপন করা হয়েছে, যেখানে এক Author এর একাধিক Book থাকতে পারে। - mappedBy:
mappedBy = "author"এই অ্যানোটেশনটি নির্দেশ করে যে, Book Entity ক্লাসেauthorফিল্ডটির মাধ্যমে এই সম্পর্কটি পরিচালিত হবে।
3. @ManyToOne Relationship
@ManyToOne সম্পর্ক তখন ব্যবহার হয় যখন অনেকগুলি entity একটি entity এর সাথে সম্পর্কিত থাকে। এটি one-to-many সম্পর্কের বিপরীত এবং একটি entity এর প্রতি একাধিক entity সম্পর্কিত থাকতে পারে।
@ManyToOne উদাহরণ:
এটি পূর্বের Book এবং Author উদাহরণের অংশ।
Book.java (Many-to-One):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Book {
@Id
private int id;
private String title;
@ManyToOne
private Author author;
// Constructors, getters, and setters
public Book() {}
public Book(int id, String title, Author author) {
this.id = id;
this.title = title;
this.author = author;
}
public Author getAuthor() {
return author;
}
public void setAuthor(Author author) {
this.author = author;
}
// Other getters and setters
}
ব্যাখ্যা:
- @ManyToOne: এখানে, Book Entity-এ Many-to-One সম্পর্কটি Author Entity এর সাথে তৈরি করা হয়েছে।
- একাধিক Book একই Author এর সাথে সম্পর্কিত থাকতে পারে।
4. @ManyToMany Relationship
@ManyToMany সম্পর্ক তখন ব্যবহার হয় যখন একটি entity অন্য একাধিক entity এর সাথে সম্পর্কিত থাকে এবং সেই সম্পর্ক উভয় দিক থেকে একাধিক হতে পারে। এটি একটি many-to-many সম্পর্ক তৈরি করে, যেখানে একটি entity এর একাধিক রেকর্ড অনেক অন্য entity এর রেকর্ডের সাথে সম্পর্কিত হতে পারে।
@ManyToMany উদাহরণ:
Student.java (Many-to-Many):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import java.util.Set;
@Entity
public class Student {
@Id
private int id;
private String name;
@ManyToMany
private Set<Course> courses;
// Constructors, getters, and setters
public Student() {}
public Student(int id, String name) {
this.id = id;
this.name = name;
}
public Set<Course> getCourses() {
return courses;
}
public void setCourses(Set<Course> courses) {
this.courses = courses;
}
// Other getters and setters
}
Course.java (Many-to-Many):
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import java.util.Set;
@Entity
public class Course {
@Id
private int id;
private String title;
@ManyToMany(mappedBy = "courses")
private Set<Student> students;
// Constructors, getters, and setters
public Course() {}
public Course(int id, String title) {
this.id = id;
this.title = title;
}
public Set<Student> getStudents() {
return students;
}
public void setStudents(Set<Student> students) {
this.students = students;
}
// Other getters and setters
}
ব্যাখ্যা:
- @ManyToMany: Student এবং Course এর মধ্যে একটি many-to-many সম্পর্ক তৈরি হয়েছে, যেখানে একাধিক Student একাধিক Course নিতে পারে এবং একাধিক Course একাধিক Student কে অন্তর্ভুক্ত করতে পারে।
- mappedBy:
mappedBy = "courses"এই অ্যানোটেশনটি বলে দেয় যে Course Entity এর মধ্যে Student এর সম্পর্কটি পরিচালিত হবে।
Summary of Associations in Hibernate
| Association Type | Explanation | Annotations Used |
|---|---|---|
| One-to-One | A single entity is associated with another single entity. | @OneToOne |
| One-to-Many | A single entity is associated with multiple entities. | @OneToMany, @ManyToOne |
| Many-to-One | Multiple entities are associated with a single entity. | @ManyToOne |
| Many-to-Many | Multiple entities are associated with multiple other entities. | @ManyToMany |
Hibernate-এ One-to-One, One-to-Many, Many-to-One, এবং Many-to-Many অ্যাসোসিয়েশন অ্যানোটেশনগুলি বিভিন্ন ধরণের সম্পর্ক পরিচালনা করতে ব্যবহৃত হয়। Hibernate ORM এই সম্পর্কগুলিকে Java objects এবং database tables এর মধ্যে সম্পর্ক তৈরি করতে ব্যবহার করে, যা ডেটাবেসের সম্পর্কিত টেবিলের মধ্যে সঠিক ডেটা সঞ্চালনা সহজ করে তোলে।
Hibernate অ্যানোটেশনগুলির মাধ্যমে, আপনি সম্পর্কিত ডেটাবেস টেবিলগুলির মধ্যে mapping তৈরি করতে পারেন, যেমন foreign key, join table, এবং cascade operations সরাসরি ডিফাইন করা যায়।
Read more