o Criteria é uma forma OO de fazer consulta, substituindo HQL. Porém, em relação a velocidade no seu caso, não acredito que Criteria seja a solução, observei algumas coisas no seu código
Transação/Commit para Consulta
Trazer uma Lista com 1000 registros, eu acho muito
Eu resolvi meu problema trocando Expression por Restrictions
:lol:
R
raikk0n3n
Eu uso o hibernate há pouco tempo li varios tutorial do hibernate e não entendi o real valor do criteria, se ele serve para inserir, listar ou deletar.
é pq meu list ta muito lento queria ver como poderia usufluir todo poder do hibernate!!!
packagebr.com.intersig.sistema.persistencia.dao.mysql.hibernate;importbr.com.intersig.sistema.beans.CadCep;importbr.com.intersig.sistema.persistencia.dao.CadCepDAO;importbr.com.intersig.sistema.persistencia.dao.HibernateUtil;importjava.util.List;importorg.hibernate.Criteria;importorg.hibernate.HibernateException;importorg.hibernate.Session;publicclassCadCepDAOMysqlHibernateimplementsCadCepDAO{publicCadCepDAOMysqlHibernate(){}publicvoidincluir(CadCepcep){Sessionsession=newHibernateUtil().getSessionFactory().openSession();try{session.beginTransaction();session.saveOrUpdate(cep);session.getTransaction().commit();}catch(Exceptionex){session.getTransaction().rollback();//ex.printStackTrace();thrownewHibernateException(ex.getMessage());}finally{session.close();}}publicListlistar(){Sessionsession=newHibernateUtil().getSessionFactory().openSession();session.beginTransaction();Listresult=session.createQuery("from CadCep as cep order by cep.cep").setMaxResults(1000).list();session.getTransaction().commit();returnresult;}publicvoidexcluir(CadCepcep){Sessionsession=newHibernateUtil().getSessionFactory().openSession();try{session.beginTransaction();session.delete(cep);session.getTransaction().commit();}catch(Exceptionex){session.getTransaction().rollback();//ex.printStackTrace();thrownewHibernateException(ex.getMessage());}finally{session.close();}}publicListlistar(Stringcep){Sessionsession=newHibernateUtil().getSessionFactory().openSession();session.beginTransaction();Listresult=session.createQuery("from CadCep as cep where cep.cep like '%"+cep+"%' order by cep.cep").setMaxResults(50).list();session.getTransaction().commit();session.close();returnresult;}}
Muito obrigado
R
raikk0n3n
mauro_schneider:
o Criteria é uma forma OO de fazer consulta, substituindo HQL. Porém, em relação a velocidade no seu caso, não acredito que Criteria seja a solução, observei algumas coisas no seu código
Transação/Commit para Consulta
Trazer uma Lista com 1000 registros, eu acho muito
Verifique índices no seu Banco de Dados
Eu peguei como exemplo de um colega só naum entendi 1 e o 4
Transação/commit e Indice???