Pré-requisito: NetBeans 6.5 Beta, ou versão mais recente com o pacote Java Web and EE ou completo. O glassfish versão 2 ou 3 deve estar instalado.
Neste tutorial podemos ver como criar uma aplicação CRUD (Create=Criar, Read=Ler, Update=Atualizar, Delete=Excluir) utilizando o NetBeans IDE 6.5 Beta. As principais características demonstrada neste tutorial são: trabalhar com um projeto web utilizando glassfish e java server faces; criar um Persistence Unit (Unidade de Persistência); criar um Entity class (Entidade de classe); gerar automaticamente páginas jsf a partir do entity class.
Vamos começar, primeiramente vá até a aba Services (Ctrl+5), abra o nó Databases e siga os seguintes passos:
- clique com o botão direito em Java DB em seguida Start Server (Figura 1)
- clique novamente com o botão direito em Java DB agora clique em Create Database…
- na próxima janela preenche os campos de acordo com a Figura 2

Figura 1 - Iniciando o servidor Java DB

Figura 2 - Criando um novo banco de dados no Java DB
Agora com o banco de dados criado, vamos então para o nosso projeto no NetBeans, então:
- Crie um novo projeto web (File->New project) na categoria Java Web, escolha a opção Web Application (Figura 3)
- na janela seguinte preencha os campos de acordo com a Figura 4
- Defina o servidor web (recomendado o glassfish v2 ou v3) e o caminho do contexto (Figura 5)
- clique em next e selecione o framework: JavaServer Faces (Figura 6)

Figura 3 - Criando um novo projeto web

Figura 4 - Definindo o nome e local do projeto

Figura 5 - Sugestões para escolha do servidor web e configurações

Figura 6 - Adicionando o framework JavaServer Faces ao seu projeto
Agora seu projeto está criado, para testar se o seu projeto está funcionando corretamente com o servidor web, clique com o botão direito no projeto (janela projects – Ctrl+1) e clique em Run.
Bom, o próximo passo é criarmos um Persistence Unit, um Entity class, os controllers do JPA (Java Persistence API):
- clique em File->new File, selecione a categoria Persistence, então escolha a opção Persistence Unit e clique em next
- Vá até a setinha do combobox e selecione New Data Source…
- digite um nome para o jndi name (ex.: dsExemploJsf), em Database Connection selecione a conexão com o banco de dados que você criou no início deste tutorial, clique em ok
- na janela Provider and Database preencha os campos de acordo com a Figura 8 em seguida clique em finish
- Novamente clique em File->new File, na categoria Persistence, selecione Entity Class e clique em next
- na janela seguinte preencha os campos de acordo com a Figura 9 e clique em Finish

Figura 7 - Novo Persistence Unit

Figura 8 - Provider and Database
Depois de gerado o arquivo Livro.java o NetBeans abre automaticamente ele, vamos editar este arquivo para que fique da seguinte forma:
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String isbn; private String titulo; private String autor; private Integer numeroPaginas; private Double peso; public Long getId() { return id; }
Então posicione o cursor na linha imediatamente depois de:
public void setId(Long id) { this.id = id; }
e pressione simultaneamente: Alt+insert, selecione Getter and Setter… selecione todos os campos e clique em ok.
Após criarmos o Entity Class, vamos para mais um wizard do netbeans o qual irá nos gerar os códigos necessários para trabalhar com JPA e os arquivos JSF, para isso vamos em File->New File, na categoria Persistence, escolha a opção: JSF Pages From Entity Classes, e siga novamente os passos:
- Escolha a Entity class do Livro (Figura 10)
- Escolha os pacotes para onde vão ficar os arquivos gerados para manipulação do JPA e JSF (Figura 11), nesta opção perceba que aparece a opção “Ajax-enable generated pages”, que fará com que o código gerado utilize tecnologia Ajax, lembrando que esta opção só está disponível a partir da versão 6.5 beta do NetBeans

Figura 10 - Selecionar Entity classes

Figura 11 - Selecionar pacotes para JPA e JSF
Pronto, agora estamos com todo o código necessário pronto, para que possamos testar o resultado do nosso projeto, construa o projeto (tecle Shift+F11, limpa e constrói o projeto) clique com o botão direito no nome do projeto pela janela Projects (Ctrl+1) em seguida clique em “Undeploy and Deploy” para remover o projeto do servidor web (se houver) e implantar a versão que você acabou de construir (Figura 12).
Se não houver nenhuma mensagem de erro na janela Output (Ctrl+4), você pode executar o projeto através da tecla F6 e ver seu CRUD funcionando bonitinho. (Figuras 13 e 14)

Figura 12 - Undeploy and Deploy (Desimplantação e implantação) do projeto

Figura 13 - CRUD pronto, criando um novo registro

Figura 14 - CRUD pronto, visão geral dos registro após confirmação de inserção do registro
Conclusão: Não é recomendável que uma pessoa que não tenha experiência com Java Server Faces utilize o assistente de geração de CRUD do NetBeans para fazer seu trabalho do dia a dia de produção, a importância dessa característica do IDE NetBeans para esse público é que tenham acesso ao desenvolvimento passo a passo da criação de um CRUD utilizando esses fantásticos frameworks para Java, o aprendizado nessa atividade é bastante satisfatório. Para quem já tem experiência basta olhar o processo de criação e os resultados e já saberá o que fazer. Para quem quer uma coisa prática, sem muito detalhe, e que seja bem rápido de fazer isso aqui é uma mão na roda.

#1 by Eric on 10 de novembro de 2008 - 15:56
Amigo
muito bom este tutorial…. mas aqui da erro …
16:54:48,046 ERROR [JBossInjectionProvider] Injection failed on managed bean.
javax.naming.NameNotFoundException: exemplo.jpa.LivroJpaController not bound
to buscando ajuda a 3 dias e me falaram q o JSF 1.1 nao aceita injecao de dependecia, como faço apra mudar para jsf 1.2 ??
Grato
Eric
#2 by Laercio Guerço Rodrigues on 31 de dezembro de 2008 - 15:49
Teria solução identica para Visual Web JSF ?
#3 by Ricardo Sampaio on 1 de janeiro de 2009 - 22:59
Usei a versão 6.5 do NetBeans (Build 200811100001) e usei o MySql 5. Na criação do projeto estava com um erro no welcomeJSF.jsp que parou de ocorrer quando indiquei para pegar as bibliotecas do jsf 1.2. Ao rodar a aplicação aparece o menu, mas quando eu solicito para ver a lista de itens dá erro de página (ás vezes aparece corretamente uma mensagem dizendo que não há nada a listar, mas as vezes nem isto).
obs.: Rodei no IE e no Firefox.
#4 by Gustavo on 7 de janeiro de 2009 - 15:12
Fiz exatamente como o tutorial e não funciona….
#5 by Charles Miranda on 28 de fevereiro de 2009 - 11:36
Paulo cara. só uma dúvida.
O toplink não exige um arquivo de mapeamento assim como o Hibernate (.hbm.xml)??
Caso exija. talvez tenha sido por isso que pessoal aí não conseguiu executar a aplicação.
Ótimo tutorial cara. Me ajudou pra caramba. fiz usando hibernate e rodou de boa.
Valeu!!!
#6 by paulocanedo on 28 de fevereiro de 2009 - 15:21
Charles: sim, realmente existe um arquivo de configuração, é o persistence.xml que é gerado automaticamente quando criamos um Persistence Unit.
Eric, esse tutorial não está adaptado para o JBoss, por isso você está tendo problemas.
Laercio, não conheço solução idêntica para o Visual JSF
Ricardo e Gustavo, seria melhor postar aqui o detalhe do erro que ocorre
#7 by Filipe on 13 de abril de 2009 - 21:36
olá paulo tudo bem?
não estou conseguindo vizualizar as imagens no site, teria um outro jeito de acessar as imagens?
fico no aguardo.
att
#8 by paulocanedo on 14 de abril de 2009 - 16:14
Olá Filipe, houve um problema na última atualização que eu fiz do wordpress e então perdi alguns arquivos, vou tentar recuperá-los e assim que conseguir eu te aviso…
#9 by Filipe on 27 de abril de 2009 - 15:48
Olá Paulo Alguma novidade sobre as imagens?
#10 by paulocanedo on 27 de abril de 2009 - 15:57
Obrigado por me lembrar, já tinha conseguido recuperar as imagens, já está corrigido.
#11 by filipe on 5 de maio de 2009 - 15:21
muito obrigado paulo!!!
#12 by Mario Mol on 30 de junho de 2009 - 17:19
Teria solução identica para Visual Web JSF ?
ou sabe como reaproveitar o codigo gerado no JSFController para o Visual Web?
ou como converter o JSF comum no Visual Web?
Abraços,
#13 by paulocanedo on 5 de julho de 2009 - 16:29
Infelizmente não conheço solução identica para o Visual Web JSF.
#14 by GuilleGB on 8 de janeiro de 2010 - 23:33
Olá Paulo procurando sobre desenvolvimento com JSF encontrei este post muito legal. Bem tentei seguir o exemplo porém apresenta o seguinte erro:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /forwardToJSF.jsp at line 10
7: –%>
8:
9:
10:
………..
Minha configutação.
Netbeans 6.8
TomCat 6.0.20
JSF 1.2
Desde já agradeço!!!