Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Classe DTO x Record DTO

Qual a diferença entre criar o DTO como classe ou record?

1 resposta
solução!

Olá, Marco. Tudo bem?

A diferença entre criar um DTO (Data Transfer Object) como uma classe ou como um record no Java está principalmente relacionada à simplicidade e à imutabilidade.

  1. Classe DTO:

    • Quando você cria um DTO como uma classe, você geralmente define atributos privados e fornece métodos getters e setters para acessá-los e modificá-los.
    • Você pode adicionar lógica adicional, como validação, dentro dos métodos.
    • É mais flexível para mudanças futuras, pois você pode adicionar facilmente métodos ou lógica adicional à classe.

    Exemplo:

    public class PagamentoDto {
        private String codigo;
        private String descricao;
        private double valor;
    
        public PagamentoDto(String codigo, String descricao, double valor) {
            this.codigo = codigo;
            this.descricao = descricao;
            this.valor = valor;
        }
    
        public String getCodigo() {
            return codigo;
        }
    
        public void setCodigo(String codigo) {
            this.codigo = codigo;
        }
    
        // Getters e setters para os outros atributos...
    }
    
  2. Record DTO:

    • Introduzido no Java 14 como uma feature preview e estabilizado no Java 16, um record é uma forma concisa de declarar uma classe que é imutável e que se destina a ser um simples "contêiner" de dados.
    • Ao usar records, você não precisa escrever explicitamente os métodos equals(), hashCode(), ou toString(), pois eles são gerados automaticamente.
    • A imutabilidade é garantida, pois os campos de um record são final e não têm setters.

    Exemplo:

    public record PagamentoDto(String codigo, String descricao, double valor) {}
    

Em resumo, se você precisa de um DTO simples e imutável, os records são uma ótima escolha por sua concisão e simplicidade. No entanto, se você precisa de mais flexibilidade, como adicionar lógica de negócios ou métodos adicionais, uma classe tradicional pode ser mais adequada.

Espero ter ajudado e bons estudos.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!