Add caching to product catalog

Problem Context

The product catalog API is getting slow under load. A developer added caching to improve performance. Products can be updated by the admin panel.

Expert
300 points

File Changes (1)

src/main/java/com/example/service/ProductService.java MODIFIED
@@ -1 +1 @@
1 1 @Service
2 2 @RequiredArgsConstructor
3 3 public class ProductService {
4 4 private final ProductRepository productRepository;
5 5
6 + @Cacheable(value = "products", key = "#id")
6 7 public Product getProduct(Long id) {
7 8 return productRepository.findById(id)
8 9 .orElseThrow(() -> new ProductNotFoundException(id));
9 10 }
10 11
12 + @Cacheable(value = "allProducts")
11 13 public List<Product> getAllProducts() {
12 14 return productRepository.findAll();
13 15 }
14 16
15 17 public Product updateProduct(Long id, ProductUpdateDTO dto) {
16 18 Product product = getProduct(id);
17 19 product.setName(dto.getName());
18 20 product.setPrice(dto.getPrice());
19 21 product.setStock(dto.getStock());
20 22 return productRepository.save(product);
21 23 }
22 24
23 25 public void deleteProduct(Long id) {
24 26 productRepository.deleteById(id);
25 27 }
26 28 }
Login Required: You must be registered to submit reviews and receive AI feedback. Register or login to start reviewing!

Your Review

Tip: Be thorough! Consider security, performance, code quality, and best practices.
Review Tips
  • Look for security vulnerabilities (SQL injection, XSS, etc.)
  • Check for null pointer exceptions and error handling
  • Consider performance implications
  • Evaluate code maintainability and readability
  • Check for proper resource management
  • Look for logic errors or edge cases
Analyzing Your Review
Our AI is carefully evaluating your code review against best practices