Spring Data JPA এর PagingAndSortingRepository ব্যবহার করা

Spring ORM এবং Pagination এবং Sorting - স্প্রিং ওআরএম (Spring ORM) - Java Technologies

285

Spring Data JPA ডাটাবেস থেকে ডেটা রিট্রিভ করার জন্য পেজিনেশন এবং সোর্টিং সহজতর করে। Spring Data JPA এর PagingAndSortingRepository ইন্টারফেস ব্যবহার করে এই ফিচারগুলো সহজে ইমপ্লিমেন্ট করা যায়।


PagingAndSortingRepository ইন্টারফেস কি?

PagingAndSortingRepository ইন্টারফেসটি Spring Data JPA এর একটি উপাদান যা JpaRepository ইন্টারফেসের মতোই কাজ করে। তবে এটি ডেটা Pagination এবং Sorting এর জন্য অতিরিক্ত মেথড প্রদান করে।

মূলত এটি দুটি গুরুত্বপূর্ণ ফিচার সরবরাহ করে:

  • পেজিনেশন (Pagination)
  • সোর্টিং (Sorting)

প্রয়োজনীয় ডিপেনডেন্সি

pom.xml ফাইলে ডিপেনডেন্সি যোগ করুন:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
</dependency>

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

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

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private Double price;

    // 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;
    }
}

PagingAndSortingRepository ইন্টারফেস ইমপ্লিমেন্ট করা

import org.springframework.data.repository.PagingAndSortingRepository;

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

সার্ভিস ক্লাসে পেজিনেশন এবং সোর্টিং ব্যবহার

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public Page<Product> getProductsWithPagination(int page, int size) {
        Pageable pageable = PageRequest.of(page, size);
        return productRepository.findAll(pageable);
    }

    public Page<Product> getProductsWithSorting(int page, int size, String sortBy) {
        Pageable pageable = PageRequest.of(page, size, Sort.by(sortBy));
        return productRepository.findAll(pageable);
    }
}

কন্ট্রোলার তৈরি করা

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

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

    @Autowired
    private ProductService productService;

    @GetMapping
    public Page<Product> getProducts(@RequestParam int page,
                                      @RequestParam int size,
                                      @RequestParam(required = false) String sortBy) {
        if (sortBy != null) {
            return productService.getProductsWithSorting(page, size, sortBy);
        }
        return productService.getProductsWithPagination(page, size);
    }
}

অ্যাপ্লিকেশন প্রোপার্টিজ কনফিগারেশন

application.properties ফাইলটি কনফিগার করুন:

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

HTTP রিকোয়েস্ট উদাহরণ

  1. পেজিনেশন:
    • GET /products?page=0&size=5
  2. পেজিনেশন এবং সোর্টিং:
    • GET /products?page=0&size=5&sortBy=price

সারাংশ

PagingAndSortingRepository Spring Data JPA এর একটি কার্যকর ফিচার যা সহজেই পেজিনেশন এবং সোর্টিং প্রদান করে। এর মাধ্যমে ডাটাবেস থেকে ডেটা রিট্রিভ করার কার্যকারিতা বৃদ্ধি পায় এবং কোড আরও সংক্ষিপ্ত হয়। ডেভেলপমেন্টে সময় বাঁচানোর জন্য এটি একটি দুর্দান্ত টুল।

Content added By
Promotion

Are you sure to start over?

Loading...