Real-World Analogy: Digital Library Catalog
Imagine managing a library catalog system. You need to Create (add new books), Read (search books by ISBN), Update (change book pricing), and Delete (remove lost books). Spring Data JPA provides instant built-in methods for all four operations!
Built-in Spring Data JPA CRUD Methods
By extending JpaRepository<Product, Long>, Spring Data JPA gives you out-of-the-box SQL operations:
| Operation | JpaRepository Method | Generated SQL Action |
|---|---|---|
| Create | repository.save(entity) |
INSERT INTO products (...) VALUES (...) |
| Read (One) | repository.findById(id) |
SELECT * FROM products WHERE id = ? |
| Read (All) | repository.findAll() |
SELECT * FROM products |
| Update | repository.save(entity) |
UPDATE products SET ... WHERE id = ? |
| Delete | repository.deleteById(id) |
DELETE FROM products WHERE id = ? |
Complete Beginner Code Example:
ProductService.java
package com.anujsingh.digitalguru.service;
import org.springframework.stereotype.Service;
import com.anujsingh.digitalguru.model.Product;
import com.anujsingh.digitalguru.repository.ProductRepository;
import java.util.List;
@Service
public class ProductService {
private final ProductRepository productRepository;
public ProductService(ProductRepository productRepository) {
this.productRepository = productRepository;
}
// 1. CREATE / UPDATE
public Product saveProduct(Product product) {
return productRepository.save(product);
}
// 2. READ ONE BY ID
public Product getProductById(Long id) {
return productRepository.findById(id)
.orElseThrow(() -> new RuntimeException("Product not found with id: " + id));
}
// 3. READ ALL
public List<Product> getAllProducts() {
return productRepository.findAll();
}
// 4. DELETE
public void deleteProduct(Long id) {
if (!productRepository.existsById(id)) {
throw new RuntimeException("Cannot delete: Product does not exist");
}
productRepository.deleteById(id);
}
}