Re:Criteria o que ser?

5 respostas
M

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

  1. Transação/Commit para Consulta

  2. Trazer uma Lista com 1000 registros, eu acho muito

  3. Verifique índices no seu Banco de Dados

5 Respostas

F

kra eu uso criteria para fazer consultas, passando expressao etc…
ex:

DetachedCriteria criteria = DetachedCriteria.forClass(Classe.class);

criteria.add(Expression.eq(“atributo”,valor));

List results = this.hibernateTemplate.findByCriteria(criteria);

basicamente é isso, mas vc pode usar from e inner join em criterias…

qualquer coisa grita ae huuhauha

[]'s

B

foliveira81:
kra eu uso criteria para fazer consultas, passando expressao etc…
ex:

DetachedCriteria criteria = DetachedCriteria.forClass(Classe.class);

criteria.add(Expression.eq(“atributo”,valor));

List results = this.hibernateTemplate.findByCriteria(criteria);

basicamente é isso, mas vc pode usar from e inner join em criterias…

qualquer coisa grita ae huuhauha

[]'s

Quando insiro no meu código a linha:

criteria.add(Expression.eq(nome, nome));

Fica dando o erro: eq(java.lang.String,java.lang.Object) in org.hibernate.criterion.Restriction cannot be appiled to (java.lang.String,nome)

O que preciso fazer para solucionar este erro???

B

Eu resolvi meu problema trocando Expression por Restrictions

:lol:

R

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!!!

package br.com.intersig.sistema.persistencia.dao.mysql.hibernate;

import br.com.intersig.sistema.beans.CadCep;
import br.com.intersig.sistema.persistencia.dao.CadCepDAO;
import br.com.intersig.sistema.persistencia.dao.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;

public class CadCepDAOMysqlHibernate implements CadCepDAO {
    
    public CadCepDAOMysqlHibernate() {
    }
    
    public void incluir(CadCep cep) {
        Session session = new HibernateUtil().getSessionFactory().openSession();
        
        try {
            session.beginTransaction();
            session.saveOrUpdate(cep);
            session.getTransaction().commit();
        }catch(Exception ex) {
            session.getTransaction().rollback();
            //ex.printStackTrace();
            throw new HibernateException(ex.getMessage());
        }finally {
            session.close();
        }
    }
    
    public List listar() {
       
        Session session = new HibernateUtil().getSessionFactory().openSession();
        session.beginTransaction();
        List result = session.createQuery("from CadCep as cep order by cep.cep").setMaxResults(1000).list();
        session.getTransaction().commit();
        return result;
    }
    
    public void excluir(CadCep cep) {
        Session session = new HibernateUtil().getSessionFactory().openSession();
        
        try {
            session.beginTransaction();
            session.delete(cep);
            session.getTransaction().commit();
        }catch(Exception ex) {
            session.getTransaction().rollback();
            //ex.printStackTrace();
            throw new HibernateException(ex.getMessage());
        }finally {
            session.close();
        }
    }
    
    public List listar(String cep) {
        Session session = new HibernateUtil().getSessionFactory().openSession();
        session.beginTransaction();
        List result = session.createQuery("from CadCep as cep where cep.cep like '%" + cep + "%' order by cep.cep").setMaxResults(50).list();
                 
        session.getTransaction().commit();
        session.close();
        return result;
    }
    
}

Muito obrigado

R

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

  1. Transação/Commit para Consulta

  2. Trazer uma Lista com 1000 registros, eu acho muito

  3. 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???

Criado 24 de novembro de 2006
Ultima resposta 24 de nov. de 2006
Respostas 5
Participantes 4