Dev (Back & Front)ARTIGO

Implantando busca com Hibernate Annotations + JSF

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!

é Bacharel em Sistemas de Informação e Especialista em Gestão e Estratégia de Negócios. Trabalha com TI desde 2003 e possui as certificações SCJP 5 e SCM. Trabalhou na IBM Brasil como Analista Programador Java, passou pelo laboratório da Enterprise Computing Lab (ECL) HP como Software Engineer, Ci&amp;T como Engenheiro de Software em projeto JEE. Tem experiência internacional em Índia, Dubai e Londres. Atualmente é cofundador da ITSLabs (www.itslabs.com.br), uma start-up focada na criação de produtos web e mobile para start-ups. Também é autor dos livros "Guia do Exame SCJP", "Guia Prático JEE com Frameworks" e "TDD na prática".

Ver perfil