Pesquisar objetos cadastrados no banco usando hibernate

Java

18/05/2010

Boa Noite Pessoal,   Estou com dúvidas de como fazer pesquisa no banco de dados ultilizando hibernate, pois tive pesquisando e assistir as aulas do Dyego Introdução Hibernate, mais ainda encontro com dúvidas.   Tenho uma página que contem  Nome: <h: inputText> para usuario digitar o nome e buttom "Pesquisar", após o usuario digitar o nome e clicar no buttom eu fiz uma <rich:dataTable> abaixo do Panel pesquisar para listar o nome pesquisado, O que usar para realizar essa consulta no Banco? E aonde acrescento esse código para realizar a pesquisa? (no managerBean, na DAO, GenericDAO ou criar um pacote com classes de pesquisa). Abaixo estão os meus códigos pra facilitar a visualização do que eu fiz. Se possivel um exemplo ou indicar uma fonte de pesquisa.   ManagerBean
 public class Secretaria {
    private List<CadastrarSecretaria> cachedCadSecretarias = null;
    private CadSecretariaDAO cad = new CadSecretariaDAO();
    private CadastrarSecretaria selectedSecretaria;

    public List<CadastrarSecretaria> getCachedCadSecretaria() {
        if (cachedCadSecretarias == null) {
            cachedCadSecretarias = cad.getCadSecretarias();
        }
        return cachedCadSecretarias;
    }
    public String doConfirmaCadSecretaria() {
        selectedSecretaria = new CadastrarSecretaria();
        return "telaconsulta";
    }
    public String finishConfirmaCadSecretaria() {
        cad.addCadastrarSecretaria(selectedSecretaria);
        cachedCadSecretarias = null;
        selectedSecretaria = new CadastrarSecretaria();
        return "ListCadSecretaria";
    }
    public CadastrarSecretaria getSelectedSecretaria() {
        return selectedSecretaria;
    }
    public void setSelectedSecretaria(CadastrarSecretaria selectedSecretaria) {
        this.selectedSecretaria = selectedSecretaria;
    }
}
 
  DAO
public class CadSecretariaDAO extends GenericDAO {
    private static final long serialVersionUID = 1L;
   private Session session;
  public CadSecretariaDAO(Session session) {
    this.session = session;
    }
    public CadSecretariaDAO() {
    this.session = getSession();
    }
    public int addCadastrarSecretaria(CadastrarSecretaria cad) {
    saveOrUpadatePojo(cad);
    return cad.getCodigosecretaria();
    
    }
    public void removeCadastrarSecretaria(CadastrarSecretaria cad) {
    removePojo(cad);
    }
    public void upadateCadastrarSecretaria(CadastrarSecretaria cad) {
    saveOrUpadatePojo(cad);
    }
    public CadastrarSecretaria getCadastrarSecretaria(Integer codigosecretaria){
    CadastrarSecretaria cad = getPojo(CadastrarSecretaria.class, codigosecretaria);
    return cad;
    }
    public CadastrarSecretaria getCadastrarSecretaria(String nome){
    CadastrarSecretaria cad = getPojo(CadastrarSecretaria.class, nome);
    return cad;
    }

    public List<CadastrarSecretaria> getCadSecretarias(){
    return getPureList(CadastrarSecretaria.class,"select from CadastrarSecretaria");
    }
}
  
  GenericDAO
public abstract class GenericDAO {
     private static final long serialVersionUID = 1L;
    
    protected Session getSession() {
        return HibernateUtil.getInstance().getSession();
    }
    protected void saveOrUpadatePojo(Serializable pojo) {
        Session ses = getSession();     
        ses.saveOrUpdate(pojo);
        ses.beginTransaction().commit();
        ses.close();
    }
    protected <T extends Serializable> T getPojo(Class<T> classToSearch, Serializable key) {
        Session ses = getSession();
        Serializable toReturn = (Serializable) ses.get(classToSearch, key);
        ses.beginTransaction().commit();
        ses.close();
        return (T) toReturn;
    }
    protected void removePojo(Serializable pojoToRemote) {
        Session ses = getSession();
        ses.delete(pojoToRemote);
        ses.beginTransaction().commit();
        
        ses.close();
    }
    protected Serializable getPurePojo(String query, Object... params) {
        Session ses = getSession();
        Query qr = ses.createQuery(query);
        for (int i = 1; i <= params.length; i++) {
            qr.setParameter(1, params[i - 1]);
        }
        Object toReturn = qr.uniqueResult();
        ses.beginTransaction().commit();
        ses.close();
        return (Serializable) toReturn;
    }
    protected <T extends Serializable> List<T> getPureList(Class<T> classToCast, String query, Object... params) {
        Session ses = getSession();
        Query qr = ses.createQuery(query);
        for (int i = 1; i <= params.length; i++) {
            qr.setParameter(1, params[i - 1]);
        }
        @SuppressWarnings("unchecked")
        List<T> toReturn = qr.list();
        ses.beginTransaction().commit();
        ses.close();
        return toReturn;
    }
}
  
Roberto Rodrigues.

Roberto Rodrigues.

Curtidas 0

Respostas

Gladstone Matos

Gladstone Matos

18/05/2010

tenho uma duvida similar!
GOSTEI 0
Roberto Rodrigues.

Roberto Rodrigues.

18/05/2010

Cladstone, continuo pesquisando e testando vamos conseguir a sim que resolver esse problema postarei aqui pra te ajudar tbm.
GOSTEI 0
Dyego Carmo

Dyego Carmo

18/05/2010

Eu nao entendi bem a sua duvida , poderia ser mais claro ?


Voce quer o HQL para isso ?

Fico no aguardo :)

GOSTEI 0
Roberto Rodrigues.

Roberto Rodrigues.

18/05/2010

Dyego de acordo com as suas aulas (Aplicação completa com Hibernate) eu fiz esse projetinho pra efeito de estudo, pois quero uma HQL ou Criteria o que for melhor pra fazer pesquisa no banco de dados.   O seguinte tenho uma página com:   Nome ____________________     Buttom                  "Pesquisar"   e  "Limpar"   O usuario vai digitar um nome no inputTex "Nome" e clicar no buttom "Pesquisar", apos isso tenho uma <rich:dataTable> pra listar os nome pesquisado. A minha dúvida é:   Como codificar uma HQL ou Criteria? Qual local pra codificar essa consulta (GenericDao ou DAO)? Como instanciar elas no ManagerBeans?
GOSTEI 0
Roberto Rodrigues.

Roberto Rodrigues.

18/05/2010

Pessoal por favor me ajudem a reseolver essa dúvida!      
GOSTEI 0
Dyego Carmo

Dyego Carmo

18/05/2010

Como codificar uma HQL ou Criteria?

public List getPesquisa(String parametro) {
Query qr = session.createQuery("from minhaentidade me where me.descricao = ?1");
qr.setParameter(1,parametro);
return qr.getResultList();
}


Qual local pra codificar essa consulta (GenericDao ou DAO)?

DAO

Como instanciar elas no ManagerBeans?

Cria o DAO e chama a funcao dele recebendo como resposta a LISTA de resultados encontrados !


GOSTEI 0
Roberto Rodrigues.

Roberto Rodrigues.

18/05/2010

Dyego criei a query, mais não entendir como instanciar para managerBean ve se é isso:   Dao d = Dao;    d.getPesquisa(String parametro) ;   A possibilidade de explicar melhor?  
GOSTEI 0
Roberto Rodrigues.

Roberto Rodrigues.

18/05/2010

Enviei o projeto pro seu Email Dyego!   Aguardo resposta.
GOSTEI 0
POSTAR