Crie DTO usando Record em Java - Novas Features JDK
Вставка
- Опубліковано 11 вер 2024
- Semana Decoder - Evento GRATUITO de 17 a 20 de Julho para você aprender a modelar, criar e gerenciar Arquitetura de Microservices com Spring. Inscreva-se pelo link: www.decoderpro...
E-book Gratuito Spring Boot da API REST aos Microservices (Versão ATUALIZADA Spring Boot 3 e Java 17): www.michellibr...
Instagram: / brito_michelli
Neste vídeo, vamos explorar essa funcionalidade Records inserida oficialmente no Java 16 para criarmos objetos de transfêrencia de dados em uma aplicação Java de uma forma bem mais simples e compacta.
Projeto no Github: github.com/Mic...
Vídeo Recomendado:
- Spring Boot | Curso Completo: • Spring Boot | Curso Co...
Links:
Lista JEPs: openjdk.org/je...
JEP 395: openjdk.org/je...
#java #record #michellibrito #springboot #jdk #dto #api #records
Um conteúdo de clean architecture com a sua didática seria muito lindo! Compraria com certeza
Sua didática é ótima, e a qualidade de gravação tbm é ótima.
Muito bom Michelli, parabéns
Excelente, a cada coisa nova que aprendo do Java eu me apaixono mais hahaha
Eh bom ver a evolução do Java❤! Com certeza inspiração do Kotlin com o data class, ambas as linguagem andando lado a lado.
Mais fácil o contrário kkkkk
@@LucasEdicoes pq?
Esse é o problema aqui no Brasil tudo isso é trazido do EUA. Enquanto os indianos um país com uma vulnerabilidade social tremenda estão aprofundando os conhecimentos em linguagens de programação, estrutura de dados, matemática aplicada, data science; os br ficam vivendo de meme importado e não se aprofundam no que realmente gera valor $$$$. Por isso mercado continua carente de profissionais e não existe um horizonte promissor. Você só não vê uma onda de estrangeiros com conhecimentos sólidos e que tratam com seriedade a tecnologia em geral, porque os salários aqui por melhor que sejam para nós, para eles é um valor rídiculo pelo grau de xp e conhecimento que eles tem. Só acho.
Estou usando meus inputs de webservices usando records, principalmente para mapeamento de entrada e jogar para o model e salvar
Poxa Michelli, agradeço de verdade por esse breve spoiler sobre os tais records. Deus abençõe.
Ótima explicação, obrigado por compartilhar o conhecimento, parabéns pelo seu trabalho.
O posso estar falando merda , eu ctz que estou kkkkk mas tenho uma ligeira percepção que o Java no futuro vai ser muito semelhante ao Kotlin de hj
conteúdo incrível michelli, como sempre!!
Conteúdo sensacional! 😍
Um ótimo conteúdo com uma ótima didática, obrigado Michelli!!
Parabéns você tem uma excelente didática
Ótima explicação.
Lombok ainda é meu preferido.
conteúdo muito bom, sempre nos dando uma aula de excelência.
Muito legal. Então agora com o Java Records já não é necessária a utilização de Lombok para limpar as classes.
Ótimo conteúdo!! Continue!! 🤗🤗
Aula fantástica como sempre
Olá. Parabéns pelo conteúdo e didática. Me tire uma dúvida. Em Models eu tenho a classe que é generalização de outras especializações. Como eu crio o record delas? Obrigado.
ótimo vídeo, mas poderia fazer um road map, para até um estágio utilizando o java por explo, pq pelo pouco que sei o java da para fazer um monte de área e para quem está começando como eu fica um pouco meio perdido, no meu caso seria estágio, o que esperar que um estágiáario saiba, ou um dev junior. Em fim obg pelo conteúdo.
Ótimo conteúdo, obrigado pela aula!
muito bom, obrigada por compartilhar
Muito bom ótimo conteúdo 👏👏
Excelente vídeo!
Obs: Não estou conseguindo baixar o e-Book
Muito bom, parabéns! ❤
Boa aula, existe como definir um equals hashcode customizado (exemplo: no caso do video usando apenas o nome) ?
Muito bom !
Lombok é mais flexível... tem que analisar onde é melhor usar.
Excelente!
record, é a abstração do que o data kotlin faz correto ?
Usando Record nos dto, como é feita a validação? Anotação do tipo @email vai funcionar?
#excelente!
Muitos profissionais java que inclusive fizeram o seu curso estao indo pra kotlin, tem previsao de lancar algo em Kotlin?
Bom dia Micheli, uma dúvida por favor...
No caso de criar um record para user, e na entity tenho id, nome e senha....se eu quiser criar um record para ocultar a senha, seria só ocultar a senha no parâmetro ?
Gostei do recurso
vlw o video, mas não vi se vc mostrou algum construtor secundário mostrou?
Olá Michelli, como eu faço pra te contatar para sanar algumas dúvidas?
Moça, deixe a fonte grande. Para quem utiliza óculos, é um pesadelo.
Muito interessante essa nova funcionalidade, mas tenho uma dúvida esse record me lembra muito o @lombok, em projeto spring boot é melhor usar @lombok ou essa funcionalidade? não vejo diferenças no resultado utilizando meios diferentes(lombok e record)
Ou é melhor utilizar apenas a anotação @Builder com o record?Evitando utilizar outras anotações como @Data,@NoAllArgsC,@AllArgsCons
Para que usar Lombok (que injeta muitas coisas desnecessárias, inclusive bugs) e importar depedência de uma lib para fazer uma coisa que acabou de ser implementada de forma otimizada no Java nativo?
Faz sentido?
Não vê diferenças de resultado? Pesquise sobre os bugs do lombok tanto na buid, quanto na compilação.
Isso é somente uma sugestão, não sou o dono da verdade, se ainda assim achar legal usar Lombok a escolha sempre é sua.
@@CaVeRaWw Agradeço pela resposta!! Irei pesquisar sobre tais bugs do lombok, no momento sou apenas um estudante buscando conhecimento, então peço desculpas pelas minha ignorância no assunto :)
Rapaz eu uso lombok pra mapear entidades e uso records apenas pra DTO, nenhum projeto meu problema, tudo relacionado a bugs do lombok e voltado pra mapeamento de entidades pra dto e vi e versa e tb pra superclasses, mas usando sem mapear entidades não vejo perigo, ao menos nunca vi em projetos que já trabalhei
Professora esse negócio de record não é coisa de Deus não... isso ai só pode ser feitiçaria colocaram algum feiticeiro ai na Oracle professora, precisamos fazer algum tipo de oração. Professora brincadeiras, à parte, amei ter encontrado este conteúdo aqui, é muito complicado ver uma pessoa tão cheia de capricho apresentar um conteúdo assim, que Deus ilumine ainda mais seus caminhos e de quem estiver ao seu redor. E ainda digo mais.. quem não se inscrever no seu canal é corno....e não simplesmente corno.....é corno manso que é pior que corno.
Bem de boa entender, talvez vc so ainda nao tenha muita pratica!
Qual teclado é esse ?
Bom video
F MacBook
o dto como record é convertido para entidade como ?
pelo que entendi dos videos simples... até demais pra falar a verdade, simplesmente pegaram a doc e fizeram um video, mas na vida real nao é assim...
tentei fazer um Mapper de record -> Entity e o modelMapper nao reconhece... ou seja deverias que fazer o famoso metodo toEntity | toDTO...
porém achei um comentario no stackoverflow... dando essa dica... testei e funcionou...
private ModelMapper modelMapper = new ModelMapper().registerModule(new RecordModule());
lembra de colocar isso no pom
org.modelmapper
modelmapper-module-record
1.0.0
@@lsr3 boa!
⏺🔝‼
Tentei usar o ModelMapper para passar atributos de um DTO record para uma Entidade classe e deu erro como resolver?
instancia teu modelmapper assim...
private ModelMapper modelMapper = new ModelMapper().registerModule(new RecordModule());
e usa essa lib
org.modelmapper
modelmapper-module-record
1.0.0
Eu gostaria de saber como trabalharia records com a biblioteca modelMapper?
Oi...
JEP = Java Enhancement-Proposal. Igual a PEPs do Python Enhancement Proposals
Ótimo conteúdo, gostaria de saber sobre validações usando @Valid. Fiz um GlobalHandler para capturar as exceções de validação (MethodArgumentNotValidException), essa exceção vêm com vários FieldError, daí eu pego o primeiro da lista, mas infelizmente essa ordem, aparentemente, não segue a ordem colocada no DTO, daí fica uma validação ruim.
Tem como adicionar ordem nesse processo?
Exemplo:
public record CreateUserDTO(
@NotBlank(message = "O nome é obrigatório")
String name,
@NotBlank(message = "O email é obrigatório")
@Email(message = "O email deve ter um endereço válido")
String email,
@NotBlank(message = "A senha é obrigatória")
@Password
String password
) {
}
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity handleValidationExceptions(
MethodArgumentNotValidException exception) {
FieldError error = exception.getBindingResult().getFieldErrors().get(0);
String errorMessage = error.getDefaultMessage();
if (errorMessage == null) {
errorMessage = "Algum dado está inválido";
}
var errorResponse = new CoreHttpExceptionResponse(errorMessage);
return ResponseEntity.status(HttpStatus.UNPROCESSABLE_ENTITY).body(errorResponse);
}
Então se eu faço uma requisição com o body vazio, por exemplo, deveria retornar { message: "O nome é obrigatório" }, porém está vindo { message: "A senha é obrigatória" }, ou seja, não segue uma ordem clara. Para piorar, não segue ordem nem de validação de um atributo específico. Ele valida coisas da senha, depois valida do nome, depois da senha novamente, etc, ou seja fica inviável.