@Entity, @Id, এবং @GeneratedValue Annotation এর ব্যবহার

JPA (Java Persistence API) এবং Spring ORM - স্প্রিং ওআরএম (Spring ORM) - Java Technologies

299

স্প্রিং ORM এর সাহায্যে জাভা পার্সিস্টেন্স এপিআই (Java Persistence API - JPA) ব্যবহার করে ডেটাবেস এবং অবজেক্টগুলোর মধ্যে ম্যাপিং করা হয়। JPA-র কিছু গুরুত্বপূর্ণ অ্যানোটেশন যেমন @Entity, @Id, এবং @GeneratedValue অবজেক্ট-রিলেশনাল ম্যাপিং (ORM) প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা পালন করে।


@Entity Annotation

ভূমিকা

@Entity অ্যানোটেশন ব্যবহার করে একটি জাভা ক্লাসকে ডেটাবেস টেবিল হিসেবে চিহ্নিত করা হয়। এই অ্যানোটেশনটি JPA ফ্রেমওয়ার্ক নির্দেশ করে যে, এই ক্লাসটি একটি টেবিলের ডেটার জন্য ব্যবহৃত হবে।

উদাহরণ

import jakarta.persistence.Entity;

@Entity
public class Employee {
    private int id;
    private String name;
    private String department;

    // Getters and Setters
}

ব্যাখ্যা:
উপরের উদাহরণে, Employee ক্লাসটিকে @Entity দিয়ে চিহ্নিত করা হয়েছে, যা নির্দেশ করে যে এটি একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করবে।


@Id Annotation

ভূমিকা

@Id অ্যানোটেশন একটি টেবিলের প্রাইমারি কী (Primary Key) নির্দেশ করতে ব্যবহৃত হয়। এটি বলে যে, কোন ফিল্ড বা ভ্যারিয়েবল ডেটাবেসে টেবিলের প্রাইমারি কী হবে।

উদাহরণ

import jakarta.persistence.Id;

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

    // Getters and Setters
}

ব্যাখ্যা:
উপরের উদাহরণে, id ফিল্ডটিকে @Id দিয়ে চিহ্নিত করা হয়েছে, যা নির্দেশ করে যে এটি টেবিলের প্রাইমারি কী হিসেবে কাজ করবে।


@GeneratedValue Annotation

ভূমিকা

@GeneratedValue অ্যানোটেশন ব্যবহার করে প্রাইমারি কী এর জন্য স্বয়ংক্রিয় মান তৈরি করা যায়। এটি সাধারণত অটোমেটিক ইনক্রিমেন্টেশন (Auto-Incrementation) অথবা ডেটাবেসের সিকোয়েন্স জেনারেটর (Sequence Generator) এর মাধ্যমে কাজ করে।

উদাহরণ

import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private String department;

    // Getters and Setters
}

ব্যাখ্যা:
উপরের উদাহরণে, @GeneratedValue ব্যবহার করে id ফিল্ডটি স্বয়ংক্রিয়ভাবে জেনারেট করা হবে। strategy প্যারামিটারটি নির্দেশ করে কীভাবে মান জেনারেট করা হবে।


@GeneratedValue এর স্ট্র্যাটেজি (Strategy) টাইপ

  1. GenerationType.AUTO: ডেটাবেসের ডিফল্ট জেনারেশন স্ট্র্যাটেজি ব্যবহার করে।
  2. GenerationType.IDENTITY: ডেটাবেসের অটো-ইনক্রিমেন্ট ফিচার ব্যবহার করে।
  3. GenerationType.SEQUENCE: একটি সিকোয়েন্স ব্যবহার করে প্রাইমারি কী তৈরি করে।
  4. GenerationType.TABLE: একটি টেবিল ব্যবহার করে প্রাইমারি কী জেনারেট করে।

পূর্ণাঙ্গ উদাহরণ

নিচে @Entity, @Id, এবং @GeneratedValue এর ব্যবহার করে একটি ক্লাস তৈরি এবং তা ডেটাবেসে সংযুক্ত করার উদাহরণ দেওয়া হলো:

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

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private String department;

    // Default Constructor
    public Employee() {}

    // Parameterized Constructor
    public Employee(String name, String department) {
        this.name = name;
        this.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 String getDepartment() {
        return department;
    }

    public void setDepartment(String department) {
        this.department = department;
    }
}

স্প্রিং ওআরএম এবং JPA অ্যানোটেশনের সুবিধা

  • স্বয়ংক্রিয় টেবিল ম্যাপিং: কম কোডে ক্লাসকে ডেটাবেস টেবিলের সাথে সংযুক্ত করা যায়।
  • সহজ প্রাইমারি কী জেনারেশন: @GeneratedValue এর মাধ্যমে প্রাইমারি কী সহজেই জেনারেট করা যায়।
  • স্ট্রাকচারাল কোড: ORM ফ্রেমওয়ার্কের মাধ্যমে কোড ক্লিন এবং মেইনটেইনেবল থাকে।
  • ডেটাবেস ইন্ডিপেন্ডেন্স: ডেটাবেস পরিবর্তন হলেও ORM কোডে তেমন কোনো পরিবর্তন প্রয়োজন হয় না।

Content added By
Promotion

Are you sure to start over?

Loading...