Pesquisar objetos cadastrados no banco usando hibernate
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
DAO
GenericDAO
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;
}
}
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");
}
}
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.
Curtidas 0
Respostas
Gladstone Matos
18/05/2010
tenho uma duvida similar!
GOSTEI 0
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
18/05/2010
Eu nao entendi bem a sua duvida , poderia ser mais claro ?
Voce quer o HQL para isso ?
Fico no aguardo :)
Voce quer o HQL para isso ?
Fico no aguardo :)
GOSTEI 0
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.
18/05/2010
Pessoal por favor me ajudem a reseolver essa dúvida!
GOSTEI 0
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 !
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.
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.
18/05/2010
Enviei o projeto pro seu Email Dyego!
Aguardo resposta.
GOSTEI 0