Considerem os seguinte exemplo:
[code]
public class Carro {
String nome;
Integer totalKm;
List<Km> listaKm;
//construtor, getter e setters...
public Integer getTotalKm() {
for (Km k : listaKm) {
totalKm = totalKm + km.getKmDia();
}
return totalKm;
}
}
public class Km {
Date data;
Integer kmDia;
Carro carro;
//construtor, getter e setters...
}
public class MbCarro {
public void imprimirTotalKm() {
System.out.println("Quantidade KM = " + carro.getTotalKm());
}
}[/code]
Imagine que eu quero imprimir a quantidade total de km que meu carro rodou.
1 Solução: Eu posso fazer igual expliquei no exemplo. No “getTotalKm()” faço um for e vou somando a quantidade KmDia, pois o JPA vai carregar a lista de km com lazy. Isso já resolveria.
2 Solução: Eu posso via uma consulta no banco (SELECT SUM(k.kmDia) FROM Km k WHERE k.carro = :parametro) no qual já me retornaria a quantidade somada sem eu precisar fazer um for, ganhando performance.
Porém minha dúvida é a seguinte:
Supondo que eu opte pela solução do “select”, qual seria o lugar mais “correto” para fazer essa busca, sendo que não posso colocar o DAO dentro do meu getTotalKm(), pois iria ferir minha camada já que não utilizo o padrão Repository.
Alguém tem uma ideia ?