Entity এর জন্য Primary Key সেট করা (@Id, @GeneratedValue)

Entity এবং Mapping - জেপিএ  (JPA) - Java Technologies

312

Primary Key (PK) একটি টেবিলের প্রতিটি রেকর্ডকে এককভাবে চিহ্নিত করতে ব্যবহৃত একটি গুরুত্বপূর্ণ উপাদান। JPA (Java Persistence API) ব্যবহার করে, Entity ক্লাসের জন্য Primary Key নির্ধারণ করা হয়, যাতে ডেটাবেসে প্রতিটি রেকর্ডের জন্য একটি ইউনিক আইডেন্টিফায়ার থাকে। JPA এর মধ্যে এটি @Id এবং @GeneratedValue অ্যানোটেশন ব্যবহার করে করা হয়।

JPA Entity এবং Primary Key


JPA Entity হলো একটি Java ক্লাস যা ডেটাবেসের টেবিলের সাথে মিলে, এবং এর ক্ষেত্রগুলো টেবিলের কলাম হিসেবে ম্যাপ করা হয়। Primary Key টেবিলের জন্য একটি ইউনিক আইডেন্টিফায়ার হিসেবে কাজ করে এবং এটি Entity ক্লাসের মধ্যে @Id অ্যানোটেশন ব্যবহার করে সেট করা হয়।

@Id অ্যানোটেশন


@Id অ্যানোটেশন ব্যবহার করা হয় Entity ক্লাসের এমন একটি ফিল্ডের জন্য, যা ডেটাবেসের টেবিলের Primary Key হিসেবে কাজ করবে।

উদাহরণ:

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

@Entity
public class User {
    @Id
    private Long id;  // This is the Primary Key

    private String name;
    private int age;

    // Getter and Setter methods
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

এখানে, id ফিল্ডকে Primary Key হিসেবে চিহ্নিত করার জন্য @Id অ্যানোটেশন ব্যবহার করা হয়েছে।

@GeneratedValue অ্যানোটেশন


যখন Primary Key এর মান স্বয়ংক্রিয়ভাবে ডেটাবেস দ্বারা তৈরি করতে হয়, তখন @GeneratedValue অ্যানোটেশন ব্যবহার করা হয়। এটি মূলত Primary Key এর মান ডেটাবেসে auto-generated বা automatically generated করতে সাহায্য করে।

@GeneratedValue অ্যানোটেশন দিয়ে আপনি কীভাবে Primary Key জেনারেট হবে তা নির্ধারণ করতে পারেন। এটি GenerationType এর মাধ্যমে কনফিগার করা যায়, যেমন:

  • GenerationType.IDENTITY: ডেটাবেসের জন্য Auto Increment ব্যবহার করা হয় (সাধারণত MySQL বা PostgreSQL তে)।
  • GenerationType.SEQUENCE: সিকোয়েন্স থেকে মান নেওয়া হয় (বিশেষত Oracle ডেটাবেসে)।
  • GenerationType.TABLE: একটি টেবিল ব্যবহার করে মান জেনারেট করা হয়।

@GeneratedValue উদাহরণ

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

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  // Primary Key will be auto-generated
    private Long id;  // This is the Primary Key

    private String name;
    private int age;

    // Getter and Setter methods
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

এখানে, @GeneratedValue(strategy = GenerationType.IDENTITY) ব্যবহার করে ডেটাবেসের Auto Increment ফিচার ব্যবহার করা হয়েছে। এর মাধ্যমে ডেটাবেসের আইডি ফিল্ডটি স্বয়ংক্রিয়ভাবে পূর্ণ হবে।

Primary Key Generation Types


@GeneratedValue এর মধ্যে strategy প্যারামিটার দিয়ে ডেটাবেসে Primary Key এর মান কীভাবে জেনারেট হবে তা নিয়ন্ত্রণ করা যায়। এর বিভিন্ন ধরণ রয়েছে:

1. GenerationType.IDENTITY

  • ডেটাবেসে auto-increment ফিচার ব্যবহার করা হয়।
  • সাধারণত MySQL এবং PostgreSQL এ ব্যবহৃত হয়।
@GeneratedValue(strategy = GenerationType.IDENTITY)

2. GenerationType.SEQUENCE

  • একটি সিকোয়েন্স টেবিল থেকে মান বের করে জেনারেট করা হয়।
  • এটি সাধারণত Oracle ডেটাবেসে ব্যবহৃত হয়।
@GeneratedValue(strategy = GenerationType.SEQUENCE)

3. GenerationType.TABLE

  • একটি টেবিল থেকে সিকোয়েন্স তৈরি করা হয় যা Primary Key এর মান জেনারেট করে।
  • এটি ডেটাবেসের নির্দিষ্ট টেবিল ব্যবহার করে কাজ করে।
@GeneratedValue(strategy = GenerationType.TABLE)

4. GenerationType.AUTO

  • JPA এর ডিফল্ট আচরণ। ডেটাবেসের ক্ষমতা অনুযায়ী এই স্ট্রাটেজি নির্বাচন করে। যদি ডেটাবেস auto-increment সাপোর্ট করে, তবে IDENTITY স্ট্রাটেজি ব্যবহার হবে, অন্যথায় SEQUENCE বা TABLE ব্যবহার হতে পারে।
@GeneratedValue(strategy = GenerationType.AUTO)

সারাংশ


  • @Id অ্যানোটেশন JPA Entity এর Primary Key ক্ষেত্র চিহ্নিত করার জন্য ব্যবহৃত হয়।
  • @GeneratedValue অ্যানোটেশন ব্যবহার করে Primary Key এর মান স্বয়ংক্রিয়ভাবে ডেটাবেস দ্বারা তৈরি করা হয়।
  • GenerationType এর মাধ্যমে আপনি Primary Key এর মান কীভাবে জেনারেট হবে তা কনফিগার করতে পারেন, যেমন IDENTITY, SEQUENCE, TABLE, অথবা AUTO

এই দুটি অ্যানোটেশন ব্যবহার করে আপনি Primary Key সেট এবং কাস্টমাইজ করতে পারেন, যা আপনার JPA অ্যাপ্লিকেশনের ডেটাবেস মডেলকে আরো কার্যকরী এবং সহজে পরিচালনাযোগ্য করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...