DIOAcad / .github

0 stars 0 forks source link

⚙️ Implementar serviço `ProductService` com padrões de design (Singleton/Factory) #17

Closed Edwanderson closed 1 month ago

Edwanderson commented 1 month ago

Issue: ⚙️ Implementar Serviço ProductService com Padrões de Design (Singleton/Factory) e JPA

Descrição:

Ajustar o serviço ProductService para usar JPA e um repositório real em vez de um armazenamento em memória. Continuamos utilizando o padrão Factory para criar objetos de Product. O serviço será responsável por operações de negócio envolvendo a entidade Product com persistência em banco de dados.

Tarefas:

Código de exemplo:

1. ProductRepository:

package com.example.demo.repository;

import com.example.demo.model.Product;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface ProductRepository extends JpaRepository<Product, Long> {
}

2. ProductService:

package com.example.demo.service;

import com.example.demo.model.Product;
import com.example.demo.repository.ProductRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    // Padrão Factory para criar produtos
    public Product createProduct(String name, Double price) {
        return new Product(null, name, price);  // O ID será gerado pelo banco de dados
    }

    // Método para salvar um produto usando JPA
    public Product save(Product product) {
        return productRepository.save(product);
    }

    // Método para buscar produto por ID usando JPA
    public Optional<Product> findById(Long id) {
        return productRepository.findById(id);
    }
}