উদাহরণ সহ ORM এবং REST API Integration

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

264

Spring ORM এবং REST API Integration হল একটি সাধারণ কৌশল যেখানে Spring ORM (Object-Relational Mapping) ব্যবহার করে ডাটাবেস অপারেশন এবং REST API-এর মাধ্যমে ক্লায়েন্ট-সার্ভারের যোগাযোগ সম্পন্ন করা হয়। এই পদ্ধতি ব্যবহার করে, Spring Framework ডাটাবেসের ডেটা RESTful Web Service API এর মাধ্যমে ক্লায়েন্টের কাছে পৌঁছাতে সাহায্য করে।

Spring ORM ব্যবহার করে Entity MappingCRUD Operations সম্পাদন করা হয়, এবং Spring Web (Spring MVC) ব্যবহার করে সেই ডেটা REST API-এর মাধ্যমে ক্লায়েন্টের কাছে পাঠানো হয়।


Spring ORM এবং REST API Integration এর মূল উদ্দেশ্য

  • ডাটাবেস অপারেশন: Spring ORM ব্যবহার করে ডাটাবেসের CRUD (Create, Read, Update, Delete) অপারেশন সম্পন্ন করা।
  • REST API তৈরি করা: Spring Web (Spring MVC) এর সাহায্যে RESTful Web Service তৈরি করা, যাতে ক্লায়েন্ট API-র মাধ্যমে ডাটাবেসে সঞ্চিত ডেটা অ্যাক্সেস করতে পারে।
  • JSON Format: REST API JSON ফরম্যাটে ডেটা প্রদান করবে, যা ক্লায়েন্টের জন্য সহজে ব্যবহারযোগ্য।

Spring ORM এবং REST API Integration এর উদাহরণ

1. Entity Class তৈরি করা (Spring ORM)

এখানে আমরা একটি Product Entity তৈরি করবো, যা ডাটাবেস টেবিলের প্রতিনিধিত্ব করবে। এই Entity ক্লাসে ORM ম্যাপিং কনফিগারেশন দেওয়া হয়েছে।

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

@Entity
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private double price;

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

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

এখানে, @Entity অ্যানোটেশন ব্যবহার করে Product ক্লাসকে ডাটাবেস টেবিলের সাথে ম্যাপ করা হয়েছে, এবং @Id এবং @GeneratedValue ব্যবহার করে প্রাইমারি কী সঠিকভাবে কনফিগার করা হয়েছে।


2. Repository Interface তৈরি করা (Spring Data JPA)

Spring Data JPA ব্যবহার করে Product Entity-এর জন্য একটি Repository তৈরি করা হবে, যা ডাটাবেস অপারেশন পরিচালনা করবে। এই Repository ক্লাসটি JpaRepository এক্সটেন্ড করে ডিফল্ট CRUD অপারেশনগুলো কার্যকর করবে।

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

public interface ProductRepository extends JpaRepository<Product, Long> {
    // custom query methods can be added here
}

এখানে JpaRepository<Product, Long> ব্যবহার করা হয়েছে, যা Product Entity-র জন্য CRUD অপারেশন অটোমেটিকভাবে প্রদান করে।


3. Service Layer তৈরি করা

ProductService ক্লাসটি ProductRepository কে ইনজেক্ট করে ডাটাবেসের CRUD অপারেশনগুলো পরিচালনা করবে।

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

import java.util.List;
import java.util.Optional;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

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

    public Optional<Product> getProductById(Long id) {
        return productRepository.findById(id);
    }

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

    public Product updateProduct(Long id, Product product) {
        if (productRepository.existsById(id)) {
            product.setId(id);
            return productRepository.save(product);
        } else {
            return null;
        }
    }

    public void deleteProduct(Long id) {
        productRepository.deleteById(id);
    }
}

এখানে ProductService ক্লাসের মাধ্যমে ডাটাবেসের CRUD অপারেশনগুলো পরিচালনা করা হয়েছে, যেমন: getAllProducts(), getProductById(), createProduct(), updateProduct(), এবং deleteProduct()


4. Controller Layer তৈরি করা (REST API)

ProductController ক্লাসটি REST API তৈরি করবে, যা ProductService ক্লাসের মেথডগুলোকে HTTP রিকোয়েস্টের মাধ্যমে এক্সপোজ করবে।

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

import java.util.List;
import java.util.Optional;

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

    @Autowired
    private ProductService productService;

    // Get all products
    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getAllProducts();
    }

    // Get product by id
    @GetMapping("/{id}")
    public ResponseEntity<Product> getProductById(@PathVariable Long id) {
        Optional<Product> product = productService.getProductById(id);
        return product.map(ResponseEntity::ok)
                      .orElseGet(() -> ResponseEntity.status(HttpStatus.NOT_FOUND).build());
    }

    // Create a new product
    @PostMapping
    public ResponseEntity<Product> createProduct(@RequestBody Product product) {
        Product createdProduct = productService.createProduct(product);
        return ResponseEntity.status(HttpStatus.CREATED).body(createdProduct);
    }

    // Update an existing product
    @PutMapping("/{id}")
    public ResponseEntity<Product> updateProduct(@PathVariable Long id, @RequestBody Product product) {
        Product updatedProduct = productService.updateProduct(id, product);
        return updatedProduct != null ? ResponseEntity.ok(updatedProduct)
                                      : ResponseEntity.status(HttpStatus.NOT_FOUND).build();
    }

    // Delete a product
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteProduct(@PathVariable Long id) {
        productService.deleteProduct(id);
        return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
    }
}

এখানে, ProductController ক্লাসে বিভিন্ন HTTP মেথড (GET, POST, PUT, DELETE) ব্যবহার করে CRUD অপারেশন REST API হিসেবে তৈরি করা হয়েছে।

  • GET /api/products: সকল পণ্য দেখাবে।
  • GET /api/products/{id}: নির্দিষ্ট পণ্য দেখাবে।
  • POST /api/products: নতুন পণ্য তৈরি করবে।
  • PUT /api/products/{id}: পণ্য আপডেট করবে।
  • DELETE /api/products/{id}: পণ্য মুছে ফেলবে।

Testing the API

API পরীক্ষা করার জন্য, Postman বা যেকোনো HTTP ক্লায়েন্ট টুল ব্যবহার করতে পারেন।

Example Request:

  1. Get all products:
    • Method: GET
    • URL: http://localhost:8080/api/products
  2. Create a product:
    • Method: POST
    • URL: http://localhost:8080/api/products
    • Body:

      {
        "name": "Smartphone",
        "price": 20000
      }
      

সার্বিক উপসংহার

Spring ORM এবং REST API Integration-এর মাধ্যমে আপনি ডাটাবেস অপারেশন এবং RESTful Web Services-এর সাহায্যে ডেটা ক্লায়েন্টের কাছে পৌঁছাতে পারেন। Spring ORM (Hibernate) ব্যবহার করে ডাটাবেসের CRUD অপারেশনগুলো বাস্তবায়ন করা হয়, এবং Spring MVC ব্যবহার করে সেই ডেটা RESTful API-এর মাধ্যমে ক্লায়েন্টের কাছে এক্সপোজ করা হয়। এই ধরনের Integration সিস্টেমের স্থিতিশীলতা এবং স্কেলেবিলিটি বৃদ্ধি করতে সাহায্য করে।


Content added By
Promotion

Are you sure to start over?

Loading...