1
resposta

[Sugestão] Otimizar o uso do Record usando a própria Classe JPA

Olá, gostaria de sugerir uma melhoria para o código exemplificado.

O fato de receber um objeto do tipo Record no Controller e termos também um Classe JPA com os mesmos campos causa uma repetição de código que, a longo prazo, causaria uma dificuldade na manutenção do código.

Para evitar esse problema, posso receber diretamente a classe "Medico" em vez de criar um Record com os mesmos campos:

@PostMapping
public void cadastrar(@RequestBody **Medico** dados) {
    repository.save(dados);
}

Importante notar que, recebendo diretamente a Classe JPA "Medico" não é necessário realizar a conversão de um Record para Classe JPA. Talvez seja necessário melhorar o mapeamento dos campos utilizando o @JsonProperty, mas teria apenas 1 local para dar manutenção. Outro ponto importante é que isso não é regra, existem casos que realmente é necessário receber um Record, pois possibilita receber dados de uma forma customizada e trata-los antes de persistir no banco de dados.

Me corrijam se estiver errado por favor, pois entendo que é um bom padrão utilizar dessa forma, mas me parece que pode causar mais trabalho conforme o projeto cresce.

1 resposta

Bom dia Luís! Não é uma boa pratica receber/devolver a entidade diretamente. Por alguns motivos O primeiro é arquitetural, as entidades estão na camada mais interna da nossa aplicação, não é recomendado ela interagir com a camada mais externa (o controller). O segundo é no quesito da segurança. As entidades no Spring interegem diretamente com a camada de persistencia, além de representarem as tabelas do nosso banco de dados. Não é seguro expor elas dessa maneira. Além que com o padrão DTO a validação se torna mais simples e facil.