O que é melhor? Query ou Iteração?

Suponha que eu tenho um objeto do tipo Pessoa com nome e idade e eu preciso fazer filtros para selecionar as pessoas por idade por exemplo qual é a melhor solução?

isso:

List lp = “SELECT p FROM Pessoa WHERE p.idade = 15”

ou isso:

List lp = "SELECT p FROM Pessoa"
List lp2 = new ArrayList<>();
for (Pessoa pe : lp){
if (pe.idade == 15){
lp2.add(pe);
}
}

Estou perguntando pois filtrar listas muitas vezes é mais fácil do que criar queries, e criar um método para cada query que eu quero fazer está poluindo meu DAO, então pensei que talvez fosse legal eu pegar uma lista de tudo via query e filtrar por “ifs”, mas me veio na cabeça que isso pode consumir mais memoria… Consome? e se consome chega a ser critica essa diferença?

A query é mais rapida.
Se for poucos registros você não notará a diferença, do contrario a diferença pode ser critica sim

3 curtidas

Query sem dúvidas.

Isto é sinal que você deve particionar mais suas classes de acesso a dados, não crie um “saco de queries”. Você poderia ter uma classe chamada PessoasPorIdade responsável somente por esse tipo de relatório.

2 curtidas

Com apenas 1 linha, a query é muito mais fácil no seu exemplo.

1 curtida

Obrigado a todos, eu acho que vou partir pro que o @javaflex falou, dividir as classes, porque tá feio kkkkk