1
resposta

Desafio proposto

Para fazer o desafio proposto pelo professor, tive que pesquisar no Google sobre o tema e cheguei a esse código abaixo. Acabou funcionando, mas eu precisaria de fazer algumas melhorias, pois está meio cru... rsrsrs

package br.com.alura.spring.data.service;

import java.util.Optional;
import java.util.Scanner;

import org.springframework.stereotype.Service;

import br.com.alura.spring.data.orm.Cargo;
import br.com.alura.spring.data.repository.CargoRepository;

@Service
public class CrudCargoService {

    private final CargoRepository cargoRepository;

    public CrudCargoService(CargoRepository cargoRepository) {
        this.cargoRepository = cargoRepository;
    }

    public void inicial(Scanner scanner) {
        salvar(scanner);
    }

    public void salvar(Scanner scanner) {
        System.out.println("Descrição do cargo");
        String descricao = scanner.next();

        Cargo cargo = new Cargo();
        cargo.setCargo(descricao);
        cargoRepository.save(cargo);
        System.out.println("Salvo");
    }

    public void atualizar(Scanner scanner) {

        System.out.println("Digite o ID do cargo a ser atualizado:");
        int id = scanner.nextInt();

        Optional<Cargo> optional = this.cargoRepository.findById(id);
        if(optional.isPresent()) {
            Cargo cargo = optional.get();

            System.out.println("Descrição do cargo");
            String descricao = scanner.next();

            cargo.setCargo(descricao);
            cargoRepository.save(cargo);
            System.out.println("Cargo atualizado.");


        } else {
            System.out.println("O ID do cargo informado: " + id + " é invalido");
        }


    }
package br.com.alura.spring.data;

import java.util.Scanner;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import br.com.alura.spring.data.service.CrudCargoService;

@SpringBootApplication
public class SpringDataApplication implements CommandLineRunner {

    private final CrudCargoService service;

    private Boolean system = true;

    public SpringDataApplication(CrudCargoService service) {
        this.service = service;
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringDataApplication.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        Scanner scanner = new Scanner(System.in);

        while(system) {
            System.out.println("Qual ação você quer executar?");
            System.out.println("0 - Sair");
            System.out.println("1 - Cargo");
            System.out.println("2 - Atualizar o cargo");

            int action = scanner.nextInt();
            if(action == 1) {
                service.inicial(scanner);
            }

            if(action == 2) {
                service.atualizar(scanner);
            }

            if(action == 0) {
                system = false;
            }

        }

    }

}
1 resposta

Olá, Paulo!

Pelo que entendi, você está com dúvidas sobre o código que postou, certo? O código que você postou é referente a um serviço de CRUD para a entidade Cargo utilizando o Spring Data JPA. Ele possui dois métodos: salvar e atualizar.

No método salvar, é solicitado ao usuário que informe a descrição do cargo e, em seguida, é criado um objeto Cargo com essa descrição e salvo no banco de dados com o método save do CargoRepository.

No método atualizar, é solicitado ao usuário que informe o ID do cargo que deseja atualizar. Se o ID informado for válido, é solicitado ao usuário que informe a nova descrição do cargo e, em seguida, é atualizado o objeto Cargo correspondente no banco de dados com a nova descrição informada pelo usuário.

Sobre as melhorias que você mencionou, talvez seja interessante validar as entradas do usuário para evitar erros de digitação ou valores inválidos. Além disso, é possível implementar outros métodos de CRUD, como excluir e listar todos os cargos.

Espero ter ajudado e bons estudos!