Paginação e consultas dinâmicas com Spring Data JPA

Поделиться
HTML-код
  • Опубликовано: 27 ноя 2024

Комментарии • 47

  • @DevEficiente
    @DevEficiente  Год назад

    Para saber mais sobre a Jornada Dev Eficiente acesse deveficiente.com/

  • @ciromoraess
    @ciromoraess 7 месяцев назад

    Gostei muito da sua maneira de explicar. O conhecimento foi muito útil para o meu cenário (:

  • @adriano9833
    @adriano9833 Год назад

    Desse jeito eu nunca tinha visto, e foi bem no momento que tava precisando. valeu.

  • @JoaoGamer-nz7le
    @JoaoGamer-nz7le 2 года назад

    Meu amigo, muito obrigado por compartilhar este conheceimento. Parabéns pela simplicidade e didática.

  • @enriccodiniz
    @enriccodiniz 3 года назад

    Que isso kkk tava dando uma pausa nos estudos da Orange Talents e me sugerem esse canal KK Muito bom, parabéns!

  • @ericdecolsales3066
    @ericdecolsales3066 4 года назад

    que aula TOP como eu queria que tivessem me ensinado isso antes

    • @DevEficiente
      @DevEficiente  4 года назад

      Oi Eric, massa que gostou!

    • @ericdecolsales3066
      @ericdecolsales3066 4 года назад

      Estou tentando fazer um teste unitário mas o Sonar reclama de não cobrir as linhas de código dentro do lambda em ToSpec. Alguma ideia de como eu faço para cobrir isso? No caso Path até return ficam como not covered

  • @JosueSantosSisproweb
    @JosueSantosSisproweb 3 года назад

    Muito bom parabéns por compartilhar conhecimento!

  • @albertoneto1180
    @albertoneto1180 3 года назад

    Muito bom 🙌🙌🙌

  • @carlosync
    @carlosync 2 года назад

    Muito top Alberto, você manja muito de Spring na Alura tem algum curso de spring que você é o instrutor ?

    • @DevEficiente
      @DevEficiente  2 года назад +1

      Oi Carlos, infelizmente na Alura eu não cheguei a gravar algum de Spring!

    • @carlosync
      @carlosync 2 года назад

      @@DevEficiente Pois é. Deveria pois você é um melhores programadores Spring do mercado brasileiro. Vou puxar a orelha do Paula Silveira rsrsrs

  • @lagoawb
    @lagoawb 2 года назад

    Muito top Alberto. parabens.
    Voce tem algum curso de spring? gostei muito da sua didatica .

    • @DevEficiente
      @DevEficiente  2 года назад

      Opaaa, não tenho velho :(. Tenho só o treinamento do deveficiente, para praticar habilidades de qualidade de código.

  • @marcosradix1
    @marcosradix1 3 года назад

    Muito top, me salvou!

  • @savioraires9062
    @savioraires9062 4 года назад

    Fazer paginação e ordenação por meio do Pageable é muito simples na maioria dos casos, dificuldade começar aumentar quando precisa ordenar por uma coluna de tabela oriunda de JOINs. Agora Alberto me chamou muito atenção essa consulta que desconhecia ser possível: @Query("SELECT u FROM Usuario u WHERE u.nome= :#{#busca.nome}")

    A possibilidade de passar um objeto como parâmetro na assinatura do método e na montagem da consulta ir acessando suas propriedades. Sabe informar se esse recurso pertence nativamente a especificação da JPA/JPQL?

    • @DevEficiente
      @DevEficiente  4 года назад +2

      É da expression language do spring mesmo. Depois ele traduz para a JPQL válida da JPA :).

  • @CViniciusSDias
    @CViniciusSDias 4 года назад

    Fala, Alberto. Falando sobre DDD, a paginação seria feito em nosso application service? Se sim, não ia rolar usar todos esses detalhes de infra, né!?
    Será que rola um vídeo mais detalhado respeito?
    🤩

    • @DevEficiente
      @DevEficiente  4 года назад +3

      Oi Vinícius, eu preciso admitir para você que faz um tempo que deixei de lado essas práticas. Acho o livro do ddd ótimo, mas peguei o que achei legal, juntei com o lance da carga cognitiva que falo e tentei achar um estilo de design adequado as aplicações que desenvolvo e facilito.

  • @davipessoa7840
    @davipessoa7840 4 года назад

    Amigo, onde está o código do vídeo para acompanhar no teu guthub? Vídeo Top!!!

    • @DevEficiente
      @DevEficiente  4 года назад

      Ainda preciso subir, falhei na missão aqui.

  • @filho925
    @filho925 3 года назад

    é possivel fazer os filtros dinamicos e um groupby no predicate?

    • @DevEficiente
      @DevEficiente  3 года назад

      Oi Ricardo, rola sim. Apenas vai rolar um esforço a mais por conta de todo código necessário na Criteria para que você monte um group by. Se fizer, depois responde aqui :).

  • @abruno1956
    @abruno1956 3 года назад

    Opa, boa tarde!
    Qual o repositório deste projeto no seu git, pfv?

    • @DevEficiente
      @DevEficiente  3 года назад

      Oi Antonio, esse acho que não criei repo :(

  • @flashmane8356
    @flashmane8356 2 года назад

    Como eu aplico isso em APIs que não utilizam o DTO?

    • @DevEficiente
      @DevEficiente  2 года назад

      Opa, acho que não muda muito. Você vai receber os parâmetros da paginação, realizar a query e devolver o que precisa. Me perdoe se eu não tiver entendido corretamente.

    • @flashmane8356
      @flashmane8356 2 года назад

      @@DevEficiente acho que a pergunta correta seria. Como utilizar esse método em projeto que utiliza factory?

    • @flashmane8356
      @flashmane8356 2 года назад

      @@DevEficiente eu até consegui fazer esse método do vídeo, porém tem um problema, ele fica duplicando os registros da tabela.
      Por exemplo se tem 3 registros com o mesmo ID ele retorna os 3, porém só com os dados do primeiro. Você sabe como resolver isso? Visto que é uma tabela que pode ter ids iguais desde que o id de centro custo seja diferente em cada registro igual.
      Utilizando Factory esse erro não acontece.

    • @flashmane8356
      @flashmane8356 2 года назад

      Consegui resolver, usei IdClass para definir o @Id em cada coluna de chave primária.

  • @kevinallen4872
    @kevinallen4872 4 года назад

    Eu achei legal a tentativa do Spring de tipar as consultas com a Criteria API, mas no geral... acho que o código fica muito verboso. Com um filtro simples no seu exemplo, foi necessário usar 7 linhas. Espero que eles melhorem isso com as expressões lambda, assim como o C# faz com o Entity Framework.

    • @DevEficiente
      @DevEficiente  4 года назад

      Ferrou hehe. O linq é um construção inimaginável para o Java. O c# tem uma funcionalidade que permite você manipular a ast do código e que dá um poder bem louco para construir dsl. Tem iniciativas tipo jooq e outras que usam metamodel, mas confesso que não acho o ganho tão legal.

    • @DevEficiente
      @DevEficiente  4 года назад

      Ah, também é claro que dá para criar wrappers sobre o criteria, através de proxies dinâmicos ou coisas menos sofisticadas. Mas admito que não vejo um resultado final tão legal. O melhor era poder concatenar um pedaço de jpql e tava tudo certo hehe

    •  4 года назад

      Parabéns Alberto! Conteúdo muito bom e claro!!
      Só uma curiosidade, você já usou a abstração criada com kotlin "implementation("au.com.console:kotlin-jpa-specification-dsl:2.0.0-rc.1")"?
      Ela deixa o código da specification bem simples com as extensions functions do kotlin:
      import au.com.console.jpaspecificationdsl.equal
      import br.com.joelamalio.invoicemanagement.domain.entities.Invoice
      import org.springframework.data.jpa.domain.Specificationimport java.time.LocalDate
      object InvoiceSpecification {
      fun equal(dueDate: LocalDate?): Specification = Invoice::dueDate.equal(dueDate)
      }

  • @carlos-eduardo-tw
    @carlos-eduardo-tw 4 года назад

    Fiz um texto para ajudar a comunidade link.medium.com/2DrKLUHgZ8

    • @DevEficiente
      @DevEficiente  4 года назад

      Oi Carlos, obrigado pelo comentário!!!