Olá, Gabriela.
Tudo bem?
O recurso record introduzido no Java 14 é realmente muito útil para representar classes imutáveis, como classes DTO. Com o record, você pode definir os atributos da classe diretamente no construtor e terá automaticamente métodos equals(), hashCode() e toString() implementados para você.
Respondendo à sua pergunta, o record funciona de forma semelhante ao DTO, permitindo que você defina atributos privados. No entanto, o record é mais conciso e simplificado, pois não requer a implementação manual de getters, setters, equals(), hashCode() e toString().
Em relação ao uso do record ou do DTO em aplicações reais, depende do contexto e das necessidades específicas do projeto. O record é uma opção interessante para classes imutáveis simples, onde você precisa apenas representar dados. Já o DTO é mais flexível e pode ser usado quando você precisa adicionar lógica ou comportamento específico à classe.
Quanto à sua pergunta sobre o uso do record para receber dados e do DTO para exportar dados, é possível utilizar o record para ambas as situações. O record pode conter lógica e comportamento, assim como o DTO. Portanto, você pode usar o record para receber os dados e também para exportá-los, caso necessite de lógica dentro do DTO.
Espero ter esclarecido suas dúvidas! Se tiver mais alguma pergunta, é só me dizer. Bons estudos!
Fonte: Documentação oficial do Java