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.
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.
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 ?
ó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.
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.
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)
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
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());
Ó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.
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.
Excelente, a cada coisa nova que aprendo do Java eu me apaixono mais hahaha
Poxa Michelli, agradeço de verdade por esse breve spoiler sobre os tais records. Deus abençõe.
Estou usando meus inputs de webservices usando records, principalmente para mapeamento de entrada e jogar para o model e salvar
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.
Muito bom Michelli, parabéns
Conteúdo sensacional! 😍
Ótima explicação.
Ótima explicação, obrigado por compartilhar o conhecimento, parabéns pelo seu trabalho.
conteúdo incrível michelli, como sempre!!
Parabéns você tem uma excelente didática
Ótimo conteúdo!! Continue!! 🤗🤗
Um ótimo conteúdo com uma ótima didática, obrigado Michelli!!
conteúdo muito bom, sempre nos dando uma aula de excelência.
muito bom, obrigada por compartilhar
Lombok ainda é meu preferido.
Aula fantástica como sempre
Ótimo conteúdo, obrigado pela aula!
Muito legal. Então agora com o Java Records já não é necessária a utilização de Lombok para limpar as classes.
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.
Muito bom ótimo conteúdo 👏👏
Muito bom, parabéns! ❤
Excelente vídeo!
Obs: Não estou conseguindo baixar o e-Book
Usando Record nos dto, como é feita a validação? Anotação do tipo @email vai funcionar?
Muitos profissionais java que inclusive fizeram o seu curso estao indo pra kotlin, tem previsao de lancar algo em Kotlin?
Boa aula, existe como definir um equals hashcode customizado (exemplo: no caso do video usando apenas o nome) ?
Muito bom !
record, é a abstração do que o data kotlin faz correto ?
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 ?
Excelente!
vlw o video, mas não vi se vc mostrou algum construtor secundário mostrou?
#excelente!
Olá Michelli, como eu faço pra te contatar para sanar algumas dúvidas?
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
ó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.
Gostei do recurso
Qual teclado é esse ?
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!
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
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
Lombok é mais flexível... tem que analisar onde é melhor usar.
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!
Eu gostaria de saber como trabalharia records com a biblioteca modelMapper?
Moça, deixe a fonte grande. Para quem utiliza óculos, é um pesadelo.
⏺🔝‼
Bom video
F MacBook
Oi...
Ó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.
JEP = Java Enhancement-Proposal. Igual a PEPs do Python Enhancement Proposals