Olá!
Estou começando um novo sistema, onde a todo o momento o usuário fará continuas pesquisa ao banco.
Encontramos duas soluções para resolver, mas esbarramos em uma questão de desempenho.
Imaginemos que temos uma tabela Pessoa, por exemplo, e tenhamos que realizar uma consulta de todas as pessoas com determinado nome.
Aplicando as soluções encontradas, teremos duas situações.
- Consultas especificas,criar uma consulta especifica no banco
- Consulta todos e seleciona via código os valores desejados.
List list = execute(SELECT * FROM Pessoa as p).getList();
for(Pessoa p:list){
if(p.getNome().equals(nomePassadoComoParametro))
System.out.println(p.getNome());//Somente pra indicar que esta pessoa será armazenada em outra lista.
}
Observando as duas soluções vemos que na segunda podemos aplicar o padrão Specification e resolver de uma forma simples e bem legal esta estrategia.
Ja na primeira é melhor pois o proprio SGBD ‘gerenciaria’ todo o contexto de transação e retornaria somente os valores já prontos.
Agora analisando pelo lado de desempenho da aplicação qual seria a melhor solução?
Att…