Pessoal,
Alguém saberia me explicar o porque da diferença no tempo de resposta da execução desses dois DAOS , os dois trazem uma lista da mesma tabela porém o segundo tem mais filtros e é o mais rápido.
Esse retorna lista com 22 segundos
public List<Movimento> getMovimentoUa(int cdUa) throws Exception {
try {
this.session = HibernateUtil.getSessionFactory().openSession();
this.tx = this.session.beginTransaction();
Criteria criteria = this.session.createCriteria(Movimento.class)
.add(Restrictions.eq("cdUa.cdUa", cdUa));
return criteria.list();
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
}
Esse método retorna a lista com 3 segundos
public List<Movimento> getMovimentoUaSemJustif(int cdUa, int cdPeriodo,
BigDecimal vlDesvioMin, BigDecimal vlDesvioNeg,
String colVlDesvioAberto) throws Exception {
try {
this.session = HibernateUtil.getSessionFactory().openSession();
this.tx = this.session.beginTransaction();
Criterion maior0 = Restrictions.gt(colVlDesvioAberto, vlDesvioMin);
Criterion menor0 = Restrictions.lt(colVlDesvioAberto, vlDesvioNeg);
Criteria criteria = this.session.createCriteria(Movimento.class)
.add(Restrictions.eq("cdUa.cdUa", cdUa)).add(
Restrictions.or(maior0, menor0));
DetachedCriteria desvio = DetachedCriteria.forClass(Desvio.class)
.setProjection(Property.forName("idMovimento")).add(
Restrictions.eq("cdPeriodo.cdPeriodo", cdPeriodo));
criteria.add(Property.forName("idMovimento").notIn(desvio));
return criteria.list();
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
}