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

КОМЕНТАРІ • 63

  • @devgui_
    @devgui_ 5 місяців тому +5

    Um conteúdo de clean architecture com a sua didática seria muito lindo! Compraria com certeza

  • @front-endnoob4139
    @front-endnoob4139 4 місяці тому +2

    Sua didática é ótima, e a qualidade de gravação tbm é ótima.

  • @user-uf8hx3lm1t
    @user-uf8hx3lm1t 18 днів тому

    Muito bom Michelli, parabéns

  • @caiquebatista5011
    @caiquebatista5011 Рік тому +1

    Excelente, a cada coisa nova que aprendo do Java eu me apaixono mais hahaha

  • @Leandro-zo4kp
    @Leandro-zo4kp Рік тому +5

    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.

    • @LucasEdicoes
      @LucasEdicoes Рік тому

      Mais fácil o contrário kkkkk

    • @Leandro-zo4kp
      @Leandro-zo4kp Рік тому

      @@LucasEdicoes pq?

    • @SoldierDan
      @SoldierDan Рік тому

      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.

  • @rezircruvinel
    @rezircruvinel Рік тому +2

    Estou usando meus inputs de webservices usando records, principalmente para mapeamento de entrada e jogar para o model e salvar

  • @julianeferrareto5176
    @julianeferrareto5176 Рік тому

    Poxa Michelli, agradeço de verdade por esse breve spoiler sobre os tais records. Deus abençõe.

  • @AndersonSantos-ur4nf
    @AndersonSantos-ur4nf Рік тому +1

    Ótima explicação, obrigado por compartilhar o conhecimento, parabéns pelo seu trabalho.

  • @karpegnogueira178
    @karpegnogueira178 Рік тому +2

    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

  • @albertofelipemonteirosena2166
    @albertofelipemonteirosena2166 Рік тому +1

    conteúdo incrível michelli, como sempre!!

  • @obrunodejesus
    @obrunodejesus Рік тому +3

    Conteúdo sensacional! 😍

  • @michelalvescaricaturista4052

    Um ótimo conteúdo com uma ótima didática, obrigado Michelli!!

  • @alexandredesouzamarques9872

    Parabéns você tem uma excelente didática

  • @user-zr3xm9fi5c
    @user-zr3xm9fi5c 7 місяців тому +1

    Ótima explicação.

  • @godinis2222
    @godinis2222 Рік тому +1

    Lombok ainda é meu preferido.

  • @lucasdesousacosta1535
    @lucasdesousacosta1535 Рік тому

    conteúdo muito bom, sempre nos dando uma aula de excelência.

  • @m3t4z0d
    @m3t4z0d 2 місяці тому

    Muito legal. Então agora com o Java Records já não é necessária a utilização de Lombok para limpar as classes.

  • @gabrnavas
    @gabrnavas Рік тому

    Ótimo conteúdo!! Continue!! 🤗🤗

  • @daimessantos4617
    @daimessantos4617 Рік тому

    Aula fantástica como sempre

  • @jorgemiguel9637
    @jorgemiguel9637 21 день тому

    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.

  • @jonaslnj
    @jonaslnj Рік тому

    ó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.

  • @thalys3046
    @thalys3046 Рік тому

    Ótimo conteúdo, obrigado pela aula!

  • @tythazinha
    @tythazinha Рік тому

    muito bom, obrigada por compartilhar

  • @marceloalvesferreira1627
    @marceloalvesferreira1627 Рік тому

    Muito bom ótimo conteúdo 👏👏

  • @adsonsiqueira
    @adsonsiqueira 4 місяці тому

    Excelente vídeo!
    Obs: Não estou conseguindo baixar o e-Book

  • @vanessaancken3756
    @vanessaancken3756 Рік тому

    Muito bom, parabéns! ❤

  • @lagoawb
    @lagoawb 4 місяці тому

    Boa aula, existe como definir um equals hashcode customizado (exemplo: no caso do video usando apenas o nome) ?

  • @randalchristian5591
    @randalchristian5591 Рік тому

    Muito bom !

  • @MarcusVPR
    @MarcusVPR Рік тому +2

    Lombok é mais flexível... tem que analisar onde é melhor usar.

  • @pires1997
    @pires1997 Рік тому

    Excelente!

  • @MrKnightBag
    @MrKnightBag Рік тому +1

    record, é a abstração do que o data kotlin faz correto ?

  • @miraodabahia6703
    @miraodabahia6703 2 місяці тому

    Usando Record nos dto, como é feita a validação? Anotação do tipo @email vai funcionar?

  • @gabrielpereiramendes3463
    @gabrielpereiramendes3463 10 місяців тому

    #excelente!

  • @BrunoSouza-zn9pz
    @BrunoSouza-zn9pz Рік тому

    Muitos profissionais java que inclusive fizeram o seu curso estao indo pra kotlin, tem previsao de lancar algo em Kotlin?

  • @rogeriotadeudosreis342
    @rogeriotadeudosreis342 8 місяців тому

    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 ?

  • @hsmiranda
    @hsmiranda Рік тому

    Gostei do recurso

  • @jefaokpta
    @jefaokpta Рік тому

    vlw o video, mas não vi se vc mostrou algum construtor secundário mostrou?

  • @RaphaelCazare
    @RaphaelCazare Рік тому

    Olá Michelli, como eu faço pra te contatar para sanar algumas dúvidas?

  • @novocanal7153
    @novocanal7153 10 місяців тому

    Moça, deixe a fonte grande. Para quem utiliza óculos, é um pesadelo.

  • @bielzindosgamesbr
    @bielzindosgamesbr Рік тому +1

    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)

    • @bielzindosgamesbr
      @bielzindosgamesbr Рік тому

      Ou é melhor utilizar apenas a anotação @Builder com o record?Evitando utilizar outras anotações como @Data,@NoAllArgsC,@AllArgsCons

    • @CaVeRaWw
      @CaVeRaWw Рік тому +2

      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.

    • @bielzindosgamesbr
      @bielzindosgamesbr Рік тому

      @@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 :)

    • @felipe-rodriguees
      @felipe-rodriguees Рік тому +1

      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

  • @robertofreware1
    @robertofreware1 Рік тому +4

    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.

    • @mateusvieira6152
      @mateusvieira6152 Рік тому

      Bem de boa entender, talvez vc so ainda nao tenha muita pratica!

  • @lagz89
    @lagz89 Рік тому

    Qual teclado é esse ?

  • @linknys
    @linknys Рік тому +1

    Bom video
    F MacBook

  • @evbuzzi6749
    @evbuzzi6749 Рік тому +1

    o dto como record é convertido para entidade como ?

    • @lsr3
      @lsr3 5 місяців тому +1

      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());

    • @lsr3
      @lsr3 5 місяців тому +1

      lembra de colocar isso no pom

      org.modelmapper
      modelmapper-module-record
      1.0.0

    • @evbuzzi6749
      @evbuzzi6749 5 місяців тому

      @@lsr3 boa!

  • @gleitonfranco1260
    @gleitonfranco1260 Рік тому

    ⏺🔝‼

  • @adroaldoferreira978
    @adroaldoferreira978 Рік тому

    Tentei usar o ModelMapper para passar atributos de um DTO record para uma Entidade classe e deu erro como resolver?

    • @lsr3
      @lsr3 5 місяців тому

      instancia teu modelmapper assim...
      private ModelMapper modelMapper = new ModelMapper().registerModule(new RecordModule());
      e usa essa lib

      org.modelmapper
      modelmapper-module-record
      1.0.0

  • @andredearaujorodrigues7725
    @andredearaujorodrigues7725 6 місяців тому +1

    Eu gostaria de saber como trabalharia records com a biblioteca modelMapper?

  • @elinesiobrito3333
    @elinesiobrito3333 Рік тому

    Oi...

  • @RicardoPorteladaSilva
    @RicardoPorteladaSilva Рік тому +1

    JEP = Java Enhancement-Proposal. Igual a PEPs do Python Enhancement Proposals

  • @icarobteles
    @icarobteles 6 місяців тому

    Ó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.