1
resposta

Dúvida sobre atribulos nulo em query + DataWebSupport

1) Seria uma melhor prática para facilitar leitura e manutenção em um projeto criar um package de config (onde ficam todos esses tipos de config) e ativar a anotação @EnableSpringDataWebSupport em uma classe anotada como @Configuration ao invés de colocar essa configuração na própria classe main ????

2) Ao invés de fazer um if no código para não filtrar propriedades nulas o time da alura tem alguma recomendação? Imagine um cenário onde são 20 propriedades para filtrar por exemplo... eu acho que fica bem ruim criar tantos if's... Recentemente eu li sobre Criteria porém não me convenceu que seja muito melhor ou diferente de muitos ifs.... Atualmente a solução que eu aborto eh escrever minha query resolvendo isso no lado do banco e até em muitas vezes pela complexidade abordar uma native query ex:

Dentro da interface extendendo o JpaRepository:
@Query("SELECT p from Planos p where (:valor is null or p.valor = :valor) and (:id is null or p.id = :id)"
Planos exemploParaOTimedaAlura (@Param("valor") Valor valor, @Param("id") Long id);

Alguma ideia ou sugestão? É uma má prática resolver isso por lado do banco? Não encontrei nada muito diferente disso em foruns e etc

1 resposta

Oi Pedro,

No item 1 as duas maneiras que você citou são aceitáveis, pois já vi projetos em que a equipe criou uma outra classe separada para adicionar todas as anotações de configurações, ao invés de deixar na classe Main, e não vejo problemas nisso.

Quanto ao item 2, existem 3 abordagens: if/else, criteria ou query do banco(como voce fez)

A mais simples seria a sua solução, utilizando a query para resolver no banco de dados, pois os if/else vão poluir o código no caso de muitos parametros, e a API de criteria é meio chatinha de ler/manter.

Bons estudos!