Olá, pessoal! Neste artigo veremos um recurso bem simples que temos no Hibernate, usando a linguagem HQL, tendo como
exemplo a aplicação construída no artigo anterior: Hibernate+
Annotations. Por ora, vamos apenas criar duas páginas JavaServerFaces
(JSF) e alterar alguns arquivos .java para implementar um sistema
de busca. A ideia aqui é mostrar a facilidade que o
framework nos oferece, sem falar que não é necessário modificar quase nada
do que já foi construído, apenas adicionar os novos recursos.
Let’s go!
Requisitos
Como vamos apenas dar continuidade à aplicação já desenvolvida, é preciso que você leia os artigos anteriores e tenha tudo implementado:
Desenvolvendo
01. O primeiro passo é atualizar a class NewsDAO.java inserindo
o método que será responsável por fazer a busca no BD.
//realiza a pesquisa no BD<br />public List consultar(String letter){<br />session = ConexaoFactory.getInstance();<br />/*para entender o HQL o from abaixo será seu bean<br /> * o l eh como se fosse o ? que temos o sql usando<br /> *o PreparedStatement apos o where temos o campo <br /> *de pesquisa que eh a coluna na tabela<br /> * paraemtro da query para pesquisa do hibernate<br /> */<br /> <br />Query query = session.createQuery("from NewsLetter l where <br />l.nome like :letter");<br />List list = query.setString("letter", "%"+letter+"%").list();<br />return list;}02. Agora vamos criar o método 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.
/*metodo que armazena o retorno da pesquisa em<br />* DataTable,de acordo o retorno do metodo <br />* de pesquisa */<br />public DataModel getBuscar(){<br />NewsDAO newsdao = new NewsDAO();<br />/* chamando o metodo de pesquisa <br /> * e passando o valor da campo digitado<br /> */<br />model = new ListDataModel(newsdao.consultar(keynome));<br />return model; }03. Agora criaremos as páginas JSF. A primeira tem o campo de busca, a
segunda traz o resultado da busca.
<f:view><br /><h:form><br /><h:panelGrid><br /><f:facet name="header"><br /><h:outputText value="Informe o nome do usuário para pesquisa" /><br /></f:facet><br /><h:inputText value="#{newsControler.keynome}" id="nome" /><br /></h:panelGrid><br /><h:commandButton value="Pesquisar" action="pesquisar"/><br /></h:form><br /></f:view>04. Esta é a página JSF que exibe o resultado da busca exibirpesquisa.jsp (não
se esqueça de importar os tagslib para o JSF):
?.<br /><f:view><br /><h:form><br /><h:dataTable value="#{newsControler.buscar}" var="us" <br />cellpadding="2" cellspacing="0"><br /><h:column><br /><f:facet name="header"><br /><h:outputText value="Id"/><br /></f:facet><br /><h:outputText value="#{us.id}"/><br /></h:column><br /><h:column><br /><f:facet name="header"><br /><h:outputText value="nome do usuario"/><br /></f:facet><br /><h:outputText value="#{us.nome}"/><br /></h:column><br /></h:dataTable><br /></h:form> <br /></f:view>Atualizando faces-config.xml
Deixe seu arquivo faces-config.xml conforme abaixo.
<managed-bean><br /> <managed-bean-name>newsControler</managed-bean-name><br /> <managed-bean-class>br.com.controler.NewsControler<br /></managed-bean-class><br /> <managed-bean-scope>session</managed-bean-scope><br /> </managed-bean><br /> <navigation-rule><br /> <display-name>news</display-name><br /> <from-view-id>/news.jsp</from-view-id><br /> <navigation-case><br /> <from-outcome>salvar</from-outcome><br /> <to-view-id>/sucesso.jsp</to-view-id><br /> </navigation-case><br /> </navigation-rule><br /> <navigation-rule><br /> <display-name>buscar</display-name><br /> <from-view-id>/buscar.jsp</from-view-id><br /> <navigation-case><br /> <from-outcome>pesquisar</from-outcome><br /> <to-view-id>/exibipesquisa.jsp</to-view-id><br /> </navigation-case><br /> </navigation-rule><br /></faces-config>
Testando
Agora vamos testar a nossa busca. Abaixo temos a imagem do nosso BD
com alguns newsletter cadastrados, assim podemos nos certificar de que a
busca trouxe o elemento correto.


Espero que tenham gostado do artigo. Abraço e até o próximo!







