Entity এবং Table Mapping

Java Technologies - স্প্রিং বুট ওআরএম (Spring Boot ORM)
238

Spring Boot ORM এর মূল কাজ হলো ডেটাবেস টেবিলের সাথে জাভা অবজেক্ট ম্যাপ করা। এই প্রসেসে Entity এবং Table Mapping গুরুত্বপূর্ণ ভূমিকা পালন করে। Entity ক্লাসের মাধ্যমে ডেটাবেস টেবিল তৈরি, রিড, আপডেট এবং ডিলিট অপারেশন সহজে সম্পন্ন করা যায়।


Entity কী?

Entity হলো জাভার একটি ক্লাস যা ডেটাবেস টেবিলের সাথে ম্যাপ করা থাকে। Entity ক্লাস সাধারণত ডেটার গঠন (schema) এবং ফিল্ডগুলোকে ডেটাবেস কলাম হিসেবে সংজ্ঞায়িত করে।

Table Mapping কী?

Table Mapping হলো ডেটাবেস টেবিল এবং জাভা ক্লাসের মধ্যে সম্পর্ক তৈরি করার পদ্ধতি। এটি @Entity এবং @Table অ্যানোটেশন ব্যবহার করে সম্পন্ন করা হয়।


Entity তৈরি এবং Table Mapping করার ধাপসমূহ

১. @Entity এবং @Table ব্যবহার

  • @Entity: এটি একটি ক্লাসকে Entity হিসেবে চিহ্নিত করে।
  • @Table: এটি ডেটাবেস টেবিলের নাম নির্ধারণ করে। যদি @Table অ্যানোটেশন ব্যবহার না করা হয়, তাহলে ডিফল্ট হিসেবে ক্লাসের নাম টেবিল হিসেবে ব্যবহৃত হবে।

উদাহরণ:

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

@Entity
@Table(name = "products")
public class Product {

    @Id
    @GeneratedValue
    private Long id;

    private String name;

    private Double price;

    // Getters and Setters
}

ব্যাখ্যা:

  • @Entity: Product ক্লাসকে একটি Entity হিসেবে ঘোষণা করেছে।
  • @Table(name = "products"): ডেটাবেস টেবিলের নাম products নির্ধারণ করা হয়েছে।

২. প্রাইমারি কী (Primary Key) নির্ধারণ

Entity ক্লাসে প্রাইমারি কী ফিল্ড @Id অ্যানোটেশনের মাধ্যমে নির্ধারণ করতে হয়। সাধারণত এটি @GeneratedValue অ্যানোটেশনের মাধ্যমে স্বয়ংক্রিয়ভাবে জেনারেট করা হয়।

@Id
@GeneratedValue
private Long id;
  • @Id: ফিল্ডটিকে প্রাইমারি কী হিসেবে চিহ্নিত করে।
  • @GeneratedValue: প্রাইমারি কী স্বয়ংক্রিয়ভাবে জেনারেট করে।

৩. কলাম ম্যাপিং

Entity ক্লাসের প্রতিটি ফিল্ড ডেটাবেস টেবিলের একটি কলামের সাথে সম্পর্কিত। @Column অ্যানোটেশন ব্যবহার করে কলামের নাম, দৈর্ঘ্য, এবং ইউনিকনেস নির্ধারণ করা যায়।

@Column(name = "product_name", length = 100, unique = true)
private String name;
  • name: ডেটাবেসে কলামের নাম।
  • length: কলামের সর্বোচ্চ দৈর্ঘ্য।
  • unique: কলামটি ইউনিক কিনা তা নির্ধারণ করে।

৪. নন-ন্যুল এবং ডিফল্ট ভ্যালু

@Column অ্যানোটেশনের nullable এবং insertable প্রপার্টি ব্যবহার করে নন-ন্যুল এবং ডিফল্ট ভ্যালু নির্ধারণ করা যায়।

@Column(nullable = false)
private Double price;

nullable = false: ডেটাবেস টেবিলের এই কলামে নাল ভ্যালু অনুমোদিত নয়।


উদাহরণ: সম্পূর্ণ Entity ক্লাস

import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Id;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Column;

@Entity
@Table(name = "products")
public class Product {

    @Id
    @GeneratedValue
    private Long id;

    @Column(name = "product_name", length = 100, unique = true)
    private String name;

    @Column(nullable = false)
    private Double price;

    // Getters and Setters
}

স্প্রিং ডেটা জেপিএর সাথে Entity ব্যবহারের উদাহরণ

ডেটাবেস থেকে ডেটা CRUD (Create, Read, Update, Delete) অপারেশন সম্পন্ন করতে Entity এবং JpaRepository ব্যবহার করা হয়।

Repository ইন্টারফেস তৈরি

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
}

ডেটা সেভ এবং রিট্রিভ করার উদাহরণ

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public Product saveProduct(Product product) {
        return productRepository.save(product);
    }

    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }
}

সারাংশ

Spring Boot ORM-এ Entity এবং Table Mapping ডেটাবেস টেবিল এবং জাভা ক্লাসের মধ্যে সেতুবন্ধন তৈরি করে। Entity ক্লাসে @Entity, @Table, এবং @Column অ্যানোটেশন ব্যবহার করে ডেটাবেসের কাঠামো সহজে নির্ধারণ এবং পরিচালনা করা যায়। এর মাধ্যমে ডেটাবেস অপারেশন আরও কার্যকর ও মেইনটেইনেবল হয়।

Content added By

Entity কি এবং এটি কিভাবে Table এর সাথে Mapping করে

179

Entity কী?

Entity হলো একটি জাভা ক্লাস যা ডেটাবেস টেবিলের সাথে ম্যাপিং করে। Entity ব্যবহার করে ডেটাবেস টেবিলের প্রতিটি রেকর্ডকে জাভা অবজেক্ট হিসেবে উপস্থাপন করা হয়। স্প্রিং বুট ORM-এ @Entity অ্যানোটেশন ব্যবহার করে একটি ক্লাসকে Entity হিসেবে চিহ্নিত করা হয়।

Entity-এর বৈশিষ্ট্য:

  1. একটি Entity সরাসরি একটি ডেটাবেস টেবিলের প্রতিনিধিত্ব করে।
  2. প্রতিটি টেবিলের কলাম Entity-এর ফিল্ড বা অ্যাট্রিবিউট হিসেবে কাজ করে।
  3. @Id অ্যানোটেশন ব্যবহার করে Entity-তে প্রাইমারি কী (Primary Key) নির্ধারণ করা হয়।

Entity এবং Table Mapping কিভাবে কাজ করে?

১. Entity ক্লাস তৈরি

Entity ক্লাস তৈরির জন্য নিচের ধাপগুলো অনুসরণ করতে হবে:

  • @Entity: ক্লাসটিকে ডেটাবেস টেবিলের সাথে ম্যাপ করার জন্য ব্যবহার করা হয়।
  • @Table: টেবিলের নাম কাস্টমাইজ করতে ব্যবহার করা হয়। এটি ঐচ্ছিক।
  • @Id: প্রাইমারি কী হিসেবে কোনো ফিল্ড চিহ্নিত করার জন্য ব্যবহৃত হয়।
  • @GeneratedValue: প্রাইমারি কী-এর মান স্বয়ংক্রিয়ভাবে জেনারেট করতে ব্যবহার করা হয়।
  • @Column: ডেটাবেস কলামের সাথে ক্লাসের ফিল্ড ম্যাপ করতে ব্যবহার করা হয়।

উদাহরণ:

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

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name", nullable = false)
    private String name;

    @Column(name = "email", unique = true)
    private String email;

    // Getters and Setters
    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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

২. Entity এবং Table Mapping প্রক্রিয়া

Mapping এর জন্য প্রয়োজনীয় Annotation গুলো:

  • @Entity: এটি ক্লাসটিকে একটি ডেটাবেস টেবিলের সাথে সংযুক্ত করে।
  • @Table: টেবিলের নাম স্পষ্টভাবে উল্লেখ করার জন্য ব্যবহৃত হয়। যদি @Table ব্যবহার না করা হয়, তবে ডিফল্টভাবে Entity-এর নাম টেবিলের নাম হিসেবে ব্যবহৃত হয়।
  • @Column: ডেটাবেস টেবিলের কলামের সাথে Entity-এর ফিল্ড ম্যাপ করে। আপনি ফিল্ডের জন্য কাস্টম নাম, ডেটা টাইপ, বা কনস্ট্রেইন্ট উল্লেখ করতে পারেন।

Mapping এর কাজ:

  1. @Entity এবং @Table নিশ্চিত করে যে, স্প্রিং বুট ডেটাবেসে একটি নির্দিষ্ট টেবিলের সাথে কাজ করছে।
  2. @Id নিশ্চিত করে যে, ডেটাবেসে এই ফিল্ডটি প্রাইমারি কী হিসেবে ব্যবহৃত হবে।
  3. @GeneratedValue প্রাইমারি কী-এর জন্য স্বয়ংক্রিয়ভাবে একটি ইউনিক মান প্রদান করে।
  4. @Column ডেটাবেস কলামের নাম, সাইজ, এবং অন্যান্য গুণাবলী নির্ধারণ করে।

৩. Hibernate এবং JPA-এর মাধ্যমে Table তৈরি

উপরের Entity ক্লাসটি ব্যবহার করে Hibernate বা JPA স্বয়ংক্রিয়ভাবে টেবিল তৈরি করতে পারে। এর জন্য application.properties বা application.yml ফাইলে নিচের কনফিগারেশন যোগ করুন:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password

এটি নিশ্চিত করে যে, Entity-এর উপর ভিত্তি করে Hibernate স্বয়ংক্রিয়ভাবে টেবিল তৈরি করবে।


Entity-এর মাধ্যমে CRUD অপারেশন

Spring Data JPA ব্যবহার করে Entity-এর উপর CRUD (Create, Read, Update, Delete) অপারেশন পরিচালনা করা যায়। এর জন্য একটি JpaRepository ইন্টারফেস তৈরি করতে হয়।

উদাহরণ:

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
}

এটি স্বয়ংক্রিয়ভাবে ডেটাবেস অপারেশনের জন্য প্রয়োজনীয় মেথড সরবরাহ করে।


সারাংশ

Entity হলো ডেটাবেস টেবিলের প্রতিনিধিত্বকারী একটি জাভা ক্লাস যা @Entity, @Table, এবং অন্যান্য অ্যানোটেশন ব্যবহার করে ডেটাবেসের সাথে ম্যাপিং করে। Hibernate বা JPA-এর মাধ্যমে Entity ব্যবহার করে ডেটাবেস টেবিল তৈরি, আপডেট এবং ডেটা পরিচালনা সহজে করা যায়। Entity এবং Table Mapping স্প্রিং বুট ORM-এর একটি গুরুত্বপূর্ণ ফিচার, যা ডেটাবেস পরিচালনাকে আরও কার্যকর এবং দ্রুত করে।

Content added By

@Entity, @Table, @Id এবং @Column অ্যানোটেশন এর ব্যবহার

156

স্প্রিং বুটে ORM (Object Relational Mapping) ব্যবহার করার সময় JPA অ্যানোটেশনগুলো জাভা ক্লাস এবং ডাটাবেস টেবিলের মধ্যে ম্যাপিং নিশ্চিত করে। নিচে @Entity, @Table, @Id এবং @Column অ্যানোটেশনের ব্যবহার এবং তাদের কার্যকারিতা বিস্তারিতভাবে দেখানো হলো।


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

  • @Entity অ্যানোটেশনটি একটি জাভা ক্লাসকে JPA এ একটি ডাটাবেস টেবিলের প্রতিনিধিত্ব করতে নির্দেশ করে।
  • এটি একটি Persistence Entity হিসেবে কাজ করে।

উদাহরণ:

import jakarta.persistence.Entity;

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

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

  • @Table অ্যানোটেশনটি @Entity অ্যানোটেশনের সঙ্গে ব্যবহার করা হয় এবং ডাটাবেস টেবিলের নাম স্পেসিফাই করে।
  • এটি ঐচ্ছিক, এবং যদি না দেওয়া হয়, JPA ক্লাসের নামকেই টেবিল নাম হিসেবে ধরে।

উদাহরণ:

import jakarta.persistence.Entity;
import jakarta.persistence.Table;

@Entity
@Table(name = "employees") // টেবিলের নাম স্পেসিফাই করা
public class Employee {
    private Long id;
    private String name;
    private String department;
}

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

  • @Id অ্যানোটেশনটি একটি ফিল্ডকে টেবিলের প্রাইমারি কী (Primary Key) হিসেবে চিহ্নিত করে।
  • এটি প্রতিটি টেবিলে আবশ্যক।

উদাহরণ:

import jakarta.persistence.Entity;
import jakarta.persistence.Id;

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

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

  • @Column অ্যানোটেশনটি একটি ফিল্ডকে ডাটাবেসের কলামের সঙ্গে ম্যাপ করে।
  • এটি ঐচ্ছিক, এবং না দিলে ডিফল্টভাবে ফিল্ডের নামকে কলামের নাম হিসেবে ধরে।
  • @Column ব্যবহার করে কলামের নাম, দৈর্ঘ্য (length), nullability ইত্যাদি নির্ধারণ করা যায়।

উদাহরণ:

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;

@Entity
public class Employee {
    @Id
    private Long id;

    @Column(name = "employee_name", length = 100, nullable = false)
    private String name;

    @Column(name = "employee_department")
    private String department;
}

সম্পূর্ণ উদাহরণ

import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.persistence.Id;
import jakarta.persistence.Column;

@Entity
@Table(name = "employees")
public class Employee {
    @Id
    private Long id;

    @Column(name = "employee_name", length = 100, nullable = false)
    private String name;

    @Column(name = "employee_department")
    private String department;

    // Getter এবং Setter
    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 String getDepartment() {
        return department;
    }

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

ব্যাখ্যা

  1. @Entity: Employee ক্লাসটিকে JPA Entity হিসেবে চিহ্নিত করে।
  2. @Table: এই ক্লাসটি ডাটাবেসের employees টেবিলের প্রতিনিধিত্ব করে।
  3. @Id: id ফিল্ডটি প্রাইমারি কী হিসেবে ব্যবহৃত।
  4. @Column: name এবং department ফিল্ডগুলোকে ডাটাবেসের নির্দিষ্ট কলামের সঙ্গে ম্যাপ করা হয়েছে।

সারাংশ

স্প্রিং বুট ORM-এ @Entity, @Table, @Id এবং @Column অ্যানোটেশন ডাটাবেস টেবিল এবং জাভা অবজেক্টের মধ্যে ম্যাপিং সহজ করে। এগুলোর মাধ্যমে ডাটাবেস অপারেশনগুলো আরও সহজ এবং স্বয়ংক্রিয় হয়ে যায়।

Content added By

Primary Key এবং Auto Increment Field তৈরি করা

161

Spring Boot ORM (Object-Relational Mapping) এ ডেটাবেস টেবিলের জন্য Primary Key এবং Auto Increment Field তৈরি করতে JPA অ্যানোটেশন ব্যবহার করা হয়। Primary Key হলো একটি টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করার জন্য ব্যবহৃত একটি ক্ষেত্র। Auto Increment Field নিশ্চিত করে যে প্রতিটি নতুন রেকর্ডের জন্য এই ক্ষেত্রের মান স্বয়ংক্রিয়ভাবে বৃদ্ধি পাবে।


Primary Key এবং Auto Increment Field তৈরির ধাপ

Entity ক্লাসে @Id এবং @GeneratedValue অ্যানোটেশন ব্যবহার

Entity ক্লাসে Primary Key এবং Auto Increment Field কনফিগার করার জন্য @Id এবং @GeneratedValue অ্যানোটেশন ব্যবহার করা হয়।

উদাহরণ: Employee Entity

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

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // Auto Increment Field
    private Long id; // Primary Key

    private String name;
    private String department;

    // Getters and Setters
    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 String getDepartment() {
        return department;
    }

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

অ্যানোটেশন ব্যাখ্যা

  • @Id:
    • এই অ্যানোটেশনটি একটি ফিল্ডকে Primary Key হিসেবে চিহ্নিত করে।
    • একটি Entity তে অন্তত একটি @Id ফিল্ড থাকতে হবে।
  • @GeneratedValue:
    • Primary Key ফিল্ডের মান স্বয়ংক্রিয়ভাবে জেনারেট করার জন্য ব্যবহৃত হয়।
    • strategy প্যারামিটার বিভিন্ন মান গ্রহণ করতে পারে:
      • GenerationType.IDENTITY: ডেটাবেস অটো-ইনক্রিমেন্ট ফিচার ব্যবহার করে।
      • GenerationType.SEQUENCE: ডেটাবেস সিকোয়েন্স ব্যবহার করে। PostgreSQL এবং Oracle ডেটাবেসে প্রযোজ্য।
      • GenerationType.TABLE: সিকোয়েন্স স্টোর করার জন্য একটি টেবিল ব্যবহার করে।
      • GenerationType.AUTO: Hibernate ডেটাবেসের উপর ভিত্তি করে স্ট্র্যাটেজি বেছে নেয়।

উদাহরণ: GenerationType.SEQUENCE

Oracle বা PostgreSQL ডেটাবেসে GenerationType.SEQUENCE ব্যবহার করতে হলে একটি সিকোয়েন্স ডিফাইন করতে হয়:

import jakarta.persistence.*;

@Entity
public class Employee {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "employee_seq")
    @SequenceGenerator(name = "employee_seq", sequenceName = "employee_sequence", allocationSize = 1)
    private Long id;

    private String name;
    private String department;

    // Getters and Setters
}
  • @SequenceGenerator:
    • সিকোয়েন্সের নাম এবং ডেটাবেসে সংজ্ঞায়িত সিকোয়েন্সের নাম নির্ধারণ করে।
    • allocationSize নির্ধারণ করে কতবার ইনক্রিমেন্ট হবে।

Spring Boot এর মাধ্যমে টেবিল তৈরি

Spring Boot চালু করার সময় Hibernate ডেটাবেস টেবিল তৈরি করবে এবং Primary Key ফিল্ডটি Auto Increment হবে।

উদাহরণ: H2 ডেটাবেসের Table Schema

Spring Boot চালু করার পর H2 Console-এ দেখা যাবে:

CREATE TABLE EMPLOYEE (
    ID BIGINT AUTO_INCREMENT PRIMARY KEY,
    NAME VARCHAR(255),
    DEPARTMENT VARCHAR(255)
);

উপসংহার

  • Primary Key: টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে।
  • Auto Increment Field: ডেটাবেসে নতুন রেকর্ড যোগ করার সময় মান স্বয়ংক্রিয়ভাবে বৃদ্ধি করে।
  • JPA অ্যানোটেশন: @Id এবং @GeneratedValue ব্যবহার করে এটি সহজেই কনফিগার করা যায়।

Spring Boot ORM এর মাধ্যমে Primary Key এবং Auto Increment Field তৈরির এই প্রক্রিয়া ডেভেলপারদের ডেটাবেস টেবিল পরিচালনা করতে অনেক সহজ করে তোলে।

Content added By

উদাহরণ সহ Entity এবং Table Mapping

233

স্প্রিং বুট ওআরএম-এ Entity এবং Table Mapping ডেটাবেসের টেবিল এবং জাভা অবজেক্টের মধ্যে একটি সংযোগ তৈরি করে। JPA এর মাধ্যমে এটি সহজেই সম্পন্ন করা যায়।


Entity এবং Table Mapping কী?

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

উদাহরণ: Entity এবং Table Mapping

নিচে একটি উদাহরণ দেওয়া হলো যেখানে Product নামে একটি Entity তৈরি করা হয়েছে এবং এটি ডেটাবেসের একটি টেবিলের সঙ্গে ম্যাপ করা হয়েছে।

Entity তৈরি

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

@Entity
@Table(name = "products") // ডেটাবেসের টেবিল নাম কাস্টমাইজ করার জন্য
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) // প্রাইমারি কী অটোমেটিক জেনারেশনের জন্য
    private Long id;

    private String name;

    private double price;

    private int quantity;

    // Getters and Setters
    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 double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }
}

Table Mapping ব্যাখ্যা

  1. @Entity: এই অ্যানোটেশন দিয়ে একটি ক্লাসকে JPA Entity হিসেবে চিহ্নিত করা হয়।
  2. @Table: টেবিলের কাস্টম নাম দিতে এই অ্যানোটেশন ব্যবহার করা হয়। এখানে products নামে টেবিল নির্ধারণ করা হয়েছে।
  3. @Id: এটি প্রাইমারি কী চিহ্নিত করে।
  4. @GeneratedValue: প্রাইমারি কী অটোমেটিক জেনারেশনের জন্য ব্যবহার করা হয়। এখানে GenerationType.IDENTITY ব্যবহৃত হয়েছে।
  5. ফিল্ডগুলো: name, price, এবং quantity টেবিলের কলাম হিসাবে ম্যাপ করা হয়েছে।

Spring Data JPA Repository উদাহরণ

এই Entity এর জন্য একটি Repository ইন্টারফেস তৈরি করা যায়:

import org.springframework.data.jpa.repository.JpaRepository;

public interface ProductRepository extends JpaRepository<Product, Long> {
    // কাস্টম কেরি লিখতে হলে এখানে মেথড সংজ্ঞা দেওয়া যাবে
    Product findByName(String name);
}

ডাটাবেস কনফিগারেশন

application.properties ফাইলে ডাটাবেসের কনফিগারেশন লিখতে হয়:

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.hibernate.ddl-auto=update

উদাহরণ: ডেটা সেভ এবং ফেচ করা

Controller উদাহরণ:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductRepository productRepository;

    @PostMapping
    public Product createProduct(@RequestBody Product product) {
        return productRepository.save(product);
    }

    @GetMapping
    public List<Product> getAllProducts() {
        return productRepository.findAll();
    }
}

টেবিলের কাঠামো (SQL)

উপরের উদাহরণ অনুযায়ী products টেবিলের কাঠামো হবে:

CREATE TABLE products (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    price DOUBLE,
    quantity INT
);

এই Entity এবং Table Mapping ব্যবহার করে স্প্রিং বুট অ্যাপ্লিকেশনের ডেটাবেস পরিচালনা করা সহজ এবং কার্যকর হয়। এটি ডেটাবেস-সংক্রান্ত কাজকে আরও সংক্ষিপ্ত ও গঠনমূলক করে তোলে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...