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
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