Busca com Hibernate Annotation + JSF
![]()
olá Pessoal,
Neste post resolvi, apresentar um recurso bem simples que temos no hibernate usando a linguagem HQL. Tendo como exemplo aplicação construida no post anterior: Hibernate+ Annotations, iremos apenas neste post criar 2 paginas JavaServerFaces – JSF, e alterar alguns arquivos .java para implementar um sistema de busca no sistema. A ideia aqui é mostrar a facilidade que o framework possibilita, sem falar que nao precisa modificar quase nada do que ja foi construido, apenas adicionar os novos recursos.
Lets go…
Requisitos:
É necessário ter implementado os posts abaixo, sobre hibernate. Aqui vamos apenas dar continuidade aplicação ja desenvolvida.
JSF + Hibernate + MySql no Eclipse
Hibernate Annotations + JSF + MySql
Desenvolvendo
1. Primeiro passo é atualizar a class NewsDAO.java inserindo o metodo que será responsavel por fazer a busca no BD.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //realiza a pesquisa no BD public List consultar(String letter){ session = ConexaoFactory.getInstance(); /*para entender o HQL o from abaixo será seu bean * o l eh como se fosse o ? que temos o sql usando *o PreparedStatement apos o where temos o campo *de pesquisa que eh a coluna na tabela * paraemtro da query para pesquisa do hibernate */ Query query = session.createQuery("from NewsLetter l where l.nome like :letter"); List list = query.setString("letter", "%"+letter+"%").list(); return list;} |
2.Agora vamos criar o metodo responsável por obter os dados no BD e armazenar esses dados em um DataModel, para facilitar a busca. Para isso temos que alterar nossa classe controladora NewsControler.java
1 2 3 4 5 6 7 8 9 10 | /*metodo que armazena o retorno da pesquisa em * DataTable,de acordo o retorno do metodo * de pesquisa */ public DataModel getBuscar(){ NewsDAO newsdao = new NewsDAO(); /* chamando o metodo de pesquisa * e passando o valor da campo digitado */ model = new ListDataModel(newsdao.consultar(keynome)); return model; } |
3.Agora criaremos as paginas JSF, a primeira tem o campo de busca, a segunda traz o resultado da busca.
1 2 3 4 5 6 7 8 9 10 11 | <f:view> <h:form> <h:panelGrid> <f:facet name="header"> <h:outputText value="Informe o nome do usuário para pesquisa" /> </f:facet> <h:inputText value="#{newsControler.keynome}" id="nome" /> </h:panelGrid> <h:commandButton value="Pesquisar" action="pesquisar"/> </h:form> </f:view> |
4.Página JSF que exibi o resultado da busca exibirpesquisa.jsp(nao esqueça de importar os tagslib para o JSF.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | …. <f:view> <h:form> <h:dataTable value="#{newsControler.buscar}" var="us" cellpadding="2" cellspacing="0"> <h:column> <f:facet name="header"> <h:outputText value="Id"/> </f:facet> <h:outputText value="#{us.id}"/> </h:column> <h:column> <f:facet name="header"> <h:outputText value="nome do usuario"/> </f:facet> <h:outputText value="#{us.nome}"/> </h:column> </h:dataTable> </h:form> </f:view> |
Atualizando faces-config.xml
Deixe seu arquivo faces-config.xml conforme abaixo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <managed-bean> <managed-bean-name>newsControler</managed-bean-name> <managed-bean-class>br.com.controler.NewsControler </managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean> <navigation-rule> <display-name>news</display-name> <from-view-id>/news.jsp</from-view-id> <navigation-case> <from-outcome>salvar</from-outcome> <to-view-id>/sucesso.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <display-name>buscar</display-name> <from-view-id>/buscar.jsp</from-view-id> <navigation-case> <from-outcome>pesquisar</from-outcome> <to-view-id>/exibipesquisa.jsp</to-view-id> </navigation-case> </navigation-rule> </faces-config> |

Testando
Agora vamos testar a nossa busca, abaixo temos a imagem do nosso BD com alguns newsletter cadastrados, assim podemos nos certificar que a busca trouxe o elemento correto.


Abraço a todos e espero que tenham gostado do post!. Até o próximo pessoal!!


