Sistema de ServiçosJavaFX

Classe Java Tecnico Service

O código da classe TecnicoService é responsável por gerenciar as operações relacionadas à entidade Tecnico na aplicação. Ele utiliza um padrão de serviço, interagindo com o TecnicoDao para realizar operações de CRUD (criação, leitura, atualização e exclusão) e converter entidades Tecnico em objetos de transferência de dados (TecnicoDto). Aqui estão os principais pontos do código e sugestões para melhor compreensão:

1. Dependência de TecnicoDao

A classe TecnicoService utiliza a classe TecnicoDao para interagir com o banco de dados. No construtor, uma instância de TecnicoDao é criada e armazenada como um campo, o que permite que todos os métodos do serviço acessem essa instância.

Esse padrão promove a separação de responsabilidades. O TecnicoDao é responsável pela interação com o banco de dados, enquanto o TecnicoService cuida da lógica de negócios.

public TecnicoService() {
    this.tecnicoDao = new TecnicoDao();
}

2. Métodos de CRUD

  • Criar (inserir): O método criar recebe um objeto TecnicoDto, o converte para a entidade Tecnico e delega a inserção ao TecnicoDao.

public boolean criar(TecnicoDto tecnicoDto) {
    Tecnico tecnico = new Tecnico(tecnicoDto);
    return tecnicoDao.inserir(tecnico);
}
  • Atualizar: Similar ao método de criação, o método atualizar converte um TecnicoDto para um Tecnico e delega a atualização ao DAO.

public boolean atualizar(TecnicoDto tecnicoDto) {
    Tecnico tecnico = new Tecnico(tecnicoDto);
    return tecnicoDao.atualizar(tecnico);
}

Buscar por ID: Esse método chama o DAO para obter um técnico específico pelo seu ID e retorna o objeto Tecnico.

public Tecnico buscarPorId(Long id) {
    return tecnicoDao.buscarPorId(id);
}

Remover: Remove um técnico do banco de dados com base no ID, utilizando o método excluir do DAO.

public void remover(Long id) {
    tecnicoDao.excluir(id);
}

3. Listagem de Técnicos

O método listarTodos retorna uma lista de TecnicoDto. Ele chama o TecnicoDao para listar todos os técnicos e utiliza streams para converter cada objeto Tecnico em um TecnicoDto.

O uso de streams facilita a conversão da lista de entidades para DTOs de forma mais legível e concisa.

public List listarTodos() {
    List tecnicos = tecnicoDao.listar();
    return tecnicos.stream()
            .map(tecnico -> new TecnicoDto(tecnico))
            .collect(Collectors.toList());
}

4. Uso de DTO (Data Transfer Object)

A classe TecnicoService usa TecnicoDto para expor e receber dados. Isso promove uma separação entre os dados que são manipulados pela aplicação e os dados persistidos no banco de dados, o que ajuda a proteger a estrutura da entidade e melhorar a flexibilidade do código.

  • Benefício: Evita expor diretamente a entidade Tecnico para camadas externas, permitindo maior controle sobre os dados que são transferidos entre as camadas da aplicação.

5. Logger para Auditoria e Depuração

O Logger é utilizado para registrar operações importantes, como a criação e a atualização de técnicos. Ele também é útil para capturar possíveis erros que ocorram durante a interação com o banco de dados:

private static final Logger logger = LoggerFactory.getLogger(TecnicoService.class);

Exemplo de uso no método criar:

logger.info("Técnico inserido com sucesso: {}", tecnico.getNome());