Spring ORM ব্যবহার করে Java প্রযুক্তিতে ডেটাবেস অপারেশন (CRUD) এবং Pagination বা পেজিনেশন বাস্তবায়ন করা খুবই সহজ। Spring Data JPA এ CrudRepository বা JpaRepository ব্যবহার করে CRUD অপারেশন এবং ডেটা সঠিকভাবে পেজিনেট করা যায়। RESTful API তে CRUD এবং Pagination সহ কার্যক্রম তৈরি করা হয় যাতে ক্লায়েন্ট সহজে ডেটা অ্যাক্সেস এবং পরিচালনা করতে পারে।
CRUD অপারেশন
CRUD অপারেশন (Create, Read, Update, Delete) মূলত ডেটাবেসে ডেটা সংরক্ষণ, আপডেট, রিট্রিভ এবং মুছে ফেলার কাজ করে। Spring Data JPA এর মাধ্যমে এগুলির বাস্তবায়ন খুবই সরল এবং স্বয়ংক্রিয়। নিচে এর বিস্তারিত ব্যাখ্যা দেওয়া হলো।
1. Create (সৃষ্টি)
এটি ডেটাবেসে নতুন রেকর্ড তৈরি করতে ব্যবহৃত হয়।
উদাহরণ: Create অপারেশন
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
private ProductService productService;
@PostMapping
public Product createProduct(@RequestBody Product product) {
return productService.createProduct(product);
}
}
Service Layer (Create Logic)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class ProductService {
@Autowired
private ProductRepository productRepository;
public Product createProduct(Product product) {
return productRepository.save(product); // Save to DB
}
}
2. Read (পড়ুন)
এটি ডেটাবেস থেকে ডেটা রিট্রিভ করার জন্য ব্যবহৃত হয়।
উদাহরণ: Read অপারেশন
@GetMapping("/{id}")
public Product getProduct(@PathVariable Long id) {
return productService.getProductById(id);
}
Service Layer (Read Logic)
public Product getProductById(Long id) {
return productRepository.findById(id).orElseThrow(() -> new RuntimeException("Product not found"));
}
3. Update (আপডেট)
এটি ডেটাবেসে বিদ্যমান রেকর্ড আপডেট করার জন্য ব্যবহৃত হয়।
উদাহরণ: Update অপারেশন
@PutMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Product updatedProduct) {
return productService.updateProduct(id, updatedProduct);
}
Service Layer (Update Logic)
public Product updateProduct(Long id, Product updatedProduct) {
Product existingProduct = productRepository.findById(id).orElseThrow(() -> new RuntimeException("Product not found"));
existingProduct.setName(updatedProduct.getName());
existingProduct.setPrice(updatedProduct.getPrice());
return productRepository.save(existingProduct);
}
4. Delete (মুছে ফেলুন)
এটি ডেটাবেস থেকে রেকর্ড মুছে ফেলার জন্য ব্যবহৃত হয়।
উদাহরণ: Delete অপারেশন
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) {
productService.deleteProduct(id);
}
Service Layer (Delete Logic)
public void deleteProduct(Long id) {
productRepository.deleteById(id);
}
Pagination (পেজিনেশন)
Pagination RESTful API-তে ডেটা বড় পরিসরে প্রক্রিয়াকরণ এবং প্রদর্শন করতে ব্যবহৃত হয়। Spring Data JPA সহজেই pagination সাপোর্ট করে। এটি Pageable এবং Page অবজেক্ট ব্যবহার করে কার্যকরীভাবে ডেটা পেজিনেট করতে সক্ষম।
উদাহরণ: Pagination (Pageable) ব্যবহারে Read অপারেশন
@GetMapping
public Page<Product> getAllProducts(@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
return productService.getProductsWithPagination(page, size);
}
Service Layer (Pagination Logic)
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
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);
}
}
Repository Layer
Pageable সমর্থনকারী রেপোজিটরি মেথড ব্যবহার করা হয়:
import org.springframework.data.jpa.repository.JpaRepository;
public interface ProductRepository extends JpaRepository<Product, Long> {
// JpaRepository already supports pagination
}
Pagination Response Format
Pagination-এর মাধ্যমে ডেটা রিটার্ন করার পর, সাধারণত এটি একটি Page অবজেক্টে রিটার্ন হয়, যা পরবর্তী পেজের জন্য প্রয়োজনীয় তথ্য (যেমন total pages, total elements) প্রদান করে।
{
"content": [
{
"id": 1,
"name": "Product 1",
"price": 100
},
{
"id": 2,
"name": "Product 2",
"price": 150
}
],
"totalElements": 20,
"totalPages": 2,
"size": 10,
"number": 0
}
Spring ORM এ CRUD এবং Pagination এর সুবিধা
| ফিচার | CRUD অপারেশন | Pagination |
|---|---|---|
| ডেটা পরিচালনা | নতুন ডেটা তৈরি, পড়া, আপডেট এবং মুছে ফেলার জন্য ব্যবহৃত। | বড় পরিসরের ডেটা ভাগ করে দেখানো, পেজিনেটেড আউটপুট। |
| প্রসেসিং স্পিড | দ্রুত, ছোট পরিসরের ডেটা পরিচালনার জন্য উপযুক্ত। | বড় পরিসরের ডেটা ব্যবস্থাপনা এবং ব্রাউজিং সুবিধা। |
| পারফরম্যান্স | ছোট ডেটাবেসের জন্য উপযুক্ত। | বড় ডেটাবেসের ক্ষেত্রে পারফরম্যান্স উন্নত হয়। |
Spring ORM ব্যবহার করে CRUD অপারেশন এবং Pagination বাস্তবায়ন খুবই সহজ, যেখানে ডেটাবেস পরিচালনা ও পেজিনেটেড ডেটার রিটার্ন করা যায়। Spring Data JPA দিয়ে এই কাজগুলো অত্যন্ত সহজ, এবং RESTful API তে সেগুলি কার্যকরভাবে কাজে লাগানো সম্ভব।