domingo, 7 de março de 2010

CRUD com JSF e Hibernate usando Eclipse, TomCat e MySQL (Parte 3)

Olá Pessoal,


Chegamos na última parte numa série de três partes, que envolveu o desenvolvimento de um CRUD de Usuário. Nas partes anteriores, configuramos o TomCat no Eclipse, criamos o projeto do tipo web, e desenvolvemos e testamos nossa camada de persistência.
Por fim, iremos criar a camada de apresentação, que será desenvolvida pelo Framework JSF.
Ao final do post, o projeto será disponibilizado para download, para quem quiser baixar e testar.

1. Passo: Abre o arquivo faces-config.xml, e selecione a aba ManagedBean -> session -> add.



2. Passo: Na tela seguinte, deixar, conforme a imagem abaixo.



3. Passo: Na próxima tela, informar o nome do ManagedBean e do Pacote, conforme a imagem abaixo.



4. Passo: Na tela seguinte, informe o nome e o escopo do ManagedBean, conforme a imagem abaixo, e depois clica em finish.



5. Passo: O arquivo faces-config.xml, deverá estar, conforme a imagem abaixo.



6. Passo: O arquivo web.xml, deverá estar, conforme a imagem abaixo.



7. Passo: Agora, iremos implementar a Classe UsuarioMB, conforme a imagem abaixo, restante do código, será mostrado nas imagens seguinte.



8. Passo: Continuado, acrescentar o seguinte código na Classe UsuarioMB, conforme a imagem abaixo.



9. Passo: Por fim, acrescentar o seguinte código na Classe UsuarioMB, conforme a imagem abaixo.



10. Passo: Agora criaremos o único arquivo jsp.



11. Passo: Na tela seguinte, informe o nome da página jsp.



12. Passo: Na tela seguinte, informe o template do tipo JSF, conforme a abaixo, e clica em finish.


13. Passo: Na página usuario.jsp, deixar conforme a imagem abaixo, o restante do código será mostrado nas imagens seguintes.



14. Passo: Na página usuario.jsp, acrescenta o código seguinte, conforme a imagem.



15. Passo: Por fim, na página usuario.jsp, acrescenta o código seguinte, conforme a imagem.



16. Passo: Assim, terminamos nossa aplicação, agora iremos testar.



17. Passo: Na tela seguinte, escolha o server TomCat e clica em Finish.



18. Passo: Agora, na barra de endereço informe a URL da nossa aplicação e clica para ir, se tudo ocorrer certo, será aberto a seguinte.


19. Passo: Agora, só testar aplicação, irei cadastrar um novo usuário, conforme a imagem abaixo.



20. Passo: Após ter cadastrados alguns usuários, já podemos ve-lôs, na table.



21. Passo: Podemos excluir um usuário.



Sendo assim, terminamos nossa aplicação, que envolveu, o uso das melhores tecnologias do mercado. Através do Hibernate, conseguimos trabalhar com objetos e sem a necessidade de ficar digitando SQL, e também o JSF que é um Framework MVC que vem crescendo no mercado, por oferecer uma produtividade incrível.
Quem quiser baixar o projeto completo, clica aqui.
Qualquer sugestão, dúvida ou crítica, ficarei a disposição.


8 comentários:

Filipe disse...

boa noite Jabes,

eu preciso nesse mesmo crud fetuar uma compra através da associação de um cliente a um ou mais Itens de pedido, ao efetuar a compra calcular o valor através do valor de cada produto comprado, diminuir da quantidade daquele produto o número de produtos comprados, todos os dados da compra do usuário deverão ser armazenados em uma classe CarrinhoCompra (Carrinho de compra) que ficará na sessão enquanto o usuário estiver utilizado o sistema. A sessão será utilizada para finalização da compra. Caso o usuário faça logout do sistema ou saia do browser a sessão será perdida.

eu sei que é muita coisa mais você teria alguma sugestão?

desde já agradeço.

Jabes Felipe disse...

Ola,

Voce pode criar suas classes de modelo, que no caso, seria Cliente, Produto, CarrinhoCompra, criar a camada de persistencia, e a camada de regra de negocio(nessa tera os metodos que ira calcular o valor total da compra dos produtos, dar baixa no estoque, etc...).
Se voce for trabalhar com sessao, tu pode configurar qual o tempo para ser expirada, obviamente se voce fiser um logout a sessao sera perdida, mas voce pode sair do browser a sessao nao sera perdida. A sessao sera perdida quando voce fica inativo por um derterminado tempo que seja mais do que o tempo que a sessao foi configurada.
Uma outra sugestao seria trabalhar com Cookies, da uma olhadinha: http://www.roseindia.net/jsp/jspcookies.shtml.
Qualquer duvida, fico a disposicao.

inuar disse...

muito legal seu artigo, eu gerei uma aplicação Blog dessa forma porém agora não sei como fazer o seguinte:

Eu tenho uma relação nxm entre Post <-> Category, o cadastro de post por default o hibernate não gera campos para este relacionamento, portanto acredito que deva ser feito na mão.

Com base em uma relação 1xn eu adicionei a tag abaixo no meu cadastro de post

(h:outputLabel value="#{bundle.CreatePostLabel_category}" for="categories" /)
(h:selectManyCheckbox id="categories" \)
(f:selectItems value="#{categoryController.itemsAvailableSelectMany}")
(/h:selectManyCheckbox)

e blz, agora ao cadastrar um posto eu marco no checkbox todas as categorias que o post pertence, porém não sei como fazer para salvar essa relação. ao postar esse form ele dá erro de validaçao pois não programei a relação entre as categorias e o post, acredito eu..

Tem idéia de como fazer isso?

Jabes Felipe disse...

Caro Nei,

Referente a relação nxn entre Post e Category, recomendo que você crie essas tabelas no seu BD, depois tu pode importar Classes Entidades do Banco, o NetBeans faz isto facilmente, o Eclipse também, todas as Classes ja vem com as suas respectivas anotações.
Para selecionar varias categorias no checkbox para um determinado post, pode fazer o seguinte:
Na sua Classe de Controler Category, tem-se:
String[] categorias = new String[]{"jsf", "struts", "ejb", "spring", "hibernate", "ajax"};
String[] categoriasSelecionadas = null;

public String mostrarCategoriasSelecionadas() {
FacesContext context = FacesContext.getCurrentInstance();
UISelectMany checksCategorias = (UISelectMany) context.getViewRoot().findComponent("form:categorias");
categoriasSelecionadas = (String[]) checksCategorias.getSelectedValues();
return null;
}

public String[] getCategoriasSelecionadas() {
return categoriasSelecionadas;
}

public String[] getCategorias() {
return categorias;
}

Na sua pagina jsp, ficaria assim:
(h:form id="form")
Categorias:
(h:selectManyCheckbox id="categorias")
(f:selectItems value="#{CategoryMB.categorias}" /)
(/h:selectManyCheckbox)
(h:commandButton value="OK" action="#{CategoryMB.mostrarCategoriasSelecionadas}" >)

Categorias Selecionadas:
(h:dataTable var="item" value="#{CategoryMB.categoriasSelecionadas}")
(h:column)
(h:outputText value="#{item}" /)
(/h:column)
(/h:dataTable)
(/h:form)

Este é apenas um exemplo simples, que quando selecionadas 0 ou mais categorias e clicado no botão OK, será mostrado todas as categorias que foram selecionadas.
Para o seu exemplo, você pode testar as categorias que estão selecionadas(só fazer um for), e persistilas uma a uma através do hibernate.

Anônimo disse...

Belíssima iniciativa, parabens!

Anônimo disse...

Onde estao as outras partes?

Jabes Felipe disse...

http://jabesfelipe.blogspot.com.br/search/label/Hibernate

Anônimo disse...

Boa tarde Jabes, gostei muito desse tópico, porém quando fui fazer apareceu muitos erros, :/
você poderia me ajudar?

Postar um comentário

Jabes Felipe RSS Feed Jabes Felipe