Primary Key এবং Foreign Key Mapping গাইড ও নোট

Java Technologies - হাইবারনেট (Hibernate) - Hibernate Mapping Techniques
341

Hibernate একটি ORM (Object-Relational Mapping) ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশনে ডেটাবেসের টেবিলগুলোর সাথে object-oriented কনসেপ্টের মধ্যে ম্যাপিং করে। Hibernate ডেটাবেসের Primary Key এবং Foreign Key সম্পর্কগুলিকে সহজে ম্যানেজ করতে সাহায্য করে, এবং আপনি Java objects এবং Relational database tables এর মধ্যে সম্পর্কগুলো সঠিকভাবে ম্যাপ করতে পারেন।

এখানে Primary Key এবং Foreign Key Mapping এর জন্য Hibernate এর ব্যবহৃত কৌশলগুলো এবং Annotations এবং XML কনফিগারেশনে Mapping কিভাবে করা যায় তা বিস্তারিতভাবে আলোচনা করা হবে।


1. Primary Key Mapping in Hibernate

Primary Key হল একটি টেবিলের একটি ফিল্ড যেটি প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে। Hibernate এ, @Id অ্যানোটেশন বা <id> XML ট্যাগ ব্যবহার করে একটি ক্লাসের প্রপার্টিকে Primary Key হিসেবে চিহ্নিত করা হয়।

Primary Key Mapping Using Annotations:

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Entity
public class Student {
    @Id  // Primary Key annotation
    @GeneratedValue(strategy = GenerationType.IDENTITY)  // Auto-generated primary key
    private int id;
    private String name;
    private String course;

    // 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 getCourse() {
        return course;
    }

    public void setCourse(String course) {
        this.course = course;
    }
}
  • @Id: এই অ্যানোটেশনটি ক্লাসের প্রপার্টিকে Primary Key হিসেবে চিহ্নিত করে।
  • @GeneratedValue: এই অ্যানোটেশনটি জানিয়ে দেয় যে, Primary Key টি অটোমেটিক্যালি জেনারেট হবে (যেমন, IDENTITY, SEQUENCE বা AUTO স্ট্র্যাটেজি অনুযায়ী)।

Primary Key Mapping Using XML Configuration:

XML কনফিগারেশনেও Primary Key ম্যানেজ করা সম্ভব। এখানে <id> ট্যাগ ব্যবহার করে Primary Key ম্যাপ করা হয়।

<class name="Student" table="student">
    <id name="id" column="id">
        <generator class="identity" />  <!-- Auto-generated Primary Key -->
    </id>
    <property name="name" column="name"/>
    <property name="course" column="course"/>
</class>
  • <id>: এটি ক্লাসের প্রপার্টিকে Primary Key হিসেবে চিহ্নিত করে এবং <generator> ট্যাগের মাধ্যমে কীভাবে এটি জেনারেট হবে তা নির্ধারণ করে।

2. Foreign Key Mapping in Hibernate

Foreign Key হল একটি কলাম যা অন্য একটি টেবিলের Primary Key-এর সাথে সম্পর্কিত। Hibernate এ Foreign Key Mapping করার জন্য বিভিন্ন সম্পর্ক তৈরি করা হয়, যেমন One-to-One, One-to-Many, এবং Many-to-Many। এখানে কিছু সাধারণ Foreign Key Mapping এর উদাহরণ দেওয়া হলো।

One-to-One Relationship Using Foreign Key:

একটি One-to-One সম্পর্ক তৈরি করার জন্য @OneToOne এবং @JoinColumn অ্যানোটেশন ব্যবহার করা হয়। এখানে Foreign Key হিসাবে student_id কে চিহ্নিত করা হয়েছে।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToOne;
import javax.persistence.JoinColumn;

@Entity
public class Student {
    @Id
    private int id;
    private String name;

    @OneToOne
    @JoinColumn(name = "address_id")  // Foreign Key Mapping
    private Address address;

    // Getters and Setters
}
@Entity
public class Address {
    @Id
    private int id;
    private String city;

    // Getters and Setters
}
  • @OneToOne: এটি One-to-One সম্পর্ক নির্দেশ করে।
  • @JoinColumn: এটি সম্পর্কিত টেবিলের জন্য Foreign Key কলাম নির্ধারণ করে।

One-to-Many Relationship Using Foreign Key:

একটি One-to-Many সম্পর্কের মধ্যে, একটি প্রাথমিক টেবিলের একাধিক রেকর্ড অন্য টেবিলের এক রেকর্ডের সাথে সম্পর্কিত থাকে। @OneToMany এবং @ManyToOne অ্যানোটেশন ব্যবহার করা হয়, এবং Foreign Key টেবিলের মধ্যে student_id হিসেবে মানানসই হয়।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;

@Entity
public class Student {
    @Id
    private int id;
    private String name;

    @OneToMany(mappedBy = "student")
    private Set<Course> courses;

    // Getters and Setters
}
@Entity
public class Course {
    @Id
    private int id;
    private String courseName;

    @ManyToOne
    @JoinColumn(name = "student_id")  // Foreign Key mapping
    private Student student;

    // Getters and Setters
}
  • @OneToMany(mappedBy = "student"): mappedBy অ্যাট্রিবিউটটি জানায় যে, Course টেবিলের মধ্যে student হল Foreign Key
  • @ManyToOne: এটি Many-to-One সম্পর্ক নির্দেশ করে, এবং @JoinColumn Foreign Key কলামকে চিহ্নিত করে।

Many-to-Many Relationship Using Foreign Key:

একটি Many-to-Many সম্পর্কের মধ্যে, একটি টেবিলের একাধিক রেকর্ড অন্য টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কিত থাকে। @ManyToMany এবং @JoinTable অ্যানোটেশন ব্যবহার করা হয়।

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.JoinTable;
import javax.persistence.JoinColumn;

@Entity
public class Student {
    @Id
    private int id;
    private String name;

    @ManyToMany
    @JoinTable(
        name = "student_course",  // Join Table
        joinColumns = @JoinColumn(name = "student_id"),  // Foreign Key in Student table
        inverseJoinColumns = @JoinColumn(name = "course_id")  // Foreign Key in Course table
    )
    private Set<Course> courses;

    // Getters and Setters
}
@Entity
public class Course {
    @Id
    private int id;
    private String courseName;

    @ManyToMany(mappedBy = "courses")
    private Set<Student> students;

    // Getters and Setters
}
  • @ManyToMany: এটি Many-to-Many সম্পর্ক নির্দেশ করে।
  • @JoinTable: এটি দুটি টেবিলের মধ্যে সম্পর্ক তৈরি করার জন্য একটি join table নির্ধারণ করে।
  • @JoinColumn: এটি Foreign Key কলাম তৈরি করে।

3. Key Differences Between Primary Key and Foreign Key Mapping in Hibernate

ফিচারPrimary Key MappingForeign Key Mapping
এন্টারিটি সম্পর্কএকটি টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে।একটি টেবিল অন্য টেবিলের সাথে সম্পর্কিত থাকে।
অ্যানোটেশন ব্যবহার@Id এবং @GeneratedValue@OneToOne, @ManyToOne, @OneToMany, @ManyToMany
ডেটাবেস টেবিলের মধ্যে সম্পর্কএকটি টেবিলের মধ্যে একক বা ইউনিক কলাম।টেবিলের মধ্যে সম্পর্ক তৈরি করার জন্য Foreign Key ব্যবহার।
সর্বাধিক ব্যবহৃত সম্পর্কএকে অপরের মধ্যে সম্পর্কিত রেকর্ডগুলির সুনির্দিষ্ট চিহ্নিতকরণএকটি টেবিলের রেকর্ড অন্য টেবিলের সাথে সম্পর্কিত হয়।

Hibernate-এ Primary Key এবং Foreign Key Mapping গুরুত্বপূর্ণ ভূমিকা পালন করে ডেটাবেস সম্পর্ক তৈরি করতে। Primary Key হল একটি টেবিলের প্রতি রেকর্ডের জন্য ইউনিক চিহ্ন, এবং Foreign Key ব্যবহার করে আপনি একাধিক টেবিলের মধ্যে সম্পর্ক তৈরি করতে পারেন। Hibernate এ আপনি Annotations এবং XML কনফিগারেশন ব্যবহারের মাধ্যমে সহজেই এই সম্পর্কগুলো ম্যানেজ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...