Archive

Posts Tagged ‘jsf. java. jee’

 Powered by Max Banner Ads 

Busca com Hibernate Annotation + JSF

December 26th, 2009 18 comments

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!!

Related Posts with Thumbnails