Criando um CRUD em JSF e Ajax com o NetBeans 6.5 Beta

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:

  1. clique com o botão direito em Java DB em seguida Start Server (Figura 1)
  2. clique novamente com o botão direito em Java DB agora clique em Create Database…
  3. 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:

  1. Crie um novo projeto web (File->New project) na categoria Java Web, escolha a opção Web Application (Figura 3)
  2. na janela seguinte preencha os campos de acordo com a Figura 4
  3. Defina o servidor web (recomendado o glassfish v2 ou v3) e o caminho do contexto (Figura 5)
  4. 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):

  1. clique em File->new File, selecione a categoria Persistence, então escolha a opção Persistence Unit e clique em next
  2. Vá até a setinha do combobox e selecione New Data Source…
  3. 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
  4. na janela Provider and Database preencha os campos de acordo com a Figura 8 em seguida clique em finish
  5. Novamente clique em File->new File, na categoria Persistence, selecione Entity Class e clique em next
  6. 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

Figura 9 - Criando um novo Entity class

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:

  1. Escolha a Entity class do Livro (Figura 10)
  2. 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.

Comments (27)

Ericnovembro 10th, 2008 at 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

Laercio Guerço Rodriguesdezembro 31st, 2008 at 15:49

Teria solução identica para Visual Web JSF ?

Ricardo Sampaiojaneiro 1st, 2009 at 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.

Gustavojaneiro 7th, 2009 at 15:12

Fiz exatamente como o tutorial e não funciona….

Charles Mirandafevereiro 28th, 2009 at 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!!!

paulocanedofevereiro 28th, 2009 at 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

Filipeabril 13th, 2009 at 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

paulocanedoabril 14th, 2009 at 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…

Filipeabril 27th, 2009 at 15:48

Olá Paulo Alguma novidade sobre as imagens?

paulocanedoabril 27th, 2009 at 15:57

Obrigado por me lembrar, já tinha conseguido recuperar as imagens, já está corrigido.

filipemaio 5th, 2009 at 15:21

muito obrigado paulo!!!

Mario Moljunho 30th, 2009 at 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,

paulocanedojulho 5th, 2009 at 16:29

Infelizmente não conheço solução identica para o Visual Web JSF.

GuilleGBjaneiro 8th, 2010 at 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!!!

Deividimaio 22nd, 2010 at 18:34

Rapaz deu certo de primeira, só funciona com o netbeans 6.5beta. Fica perfeito. Precisava muito de uma aplicação web para servir como estudos de um trabalho da faculdade. Obrigado mesmo. Parabéns

gabrielmaio 31st, 2010 at 14:28

Ola Paulo
Estou iniciando netbeans com 6.7.1
Estou reproduzindo exatamente o processo acima com uma tabela mysql que tenho e nao consigo nada.
No processo nao vi em nenhum momento onde se define a TABELA que vai ser opearada . Existe definicao da conexao e dos campos.
No projeto nao ocorre nenhum SELECT * from TABELA

Paulo Canedomaio 31st, 2010 at 14:38

Olá Grabriel, aconselho você aprender um pouco sobre JSF e JPA antes de tentar esse tutorial. Valeu!

Nei Raunijunho 8th, 2010 at 22:18

Eu gerei uma aplicação Blog usando o gerador de CRUD da mesma forma que você 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

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

Poderia me passar as dicas para implementar essa relação muitos pra muitos em um crud?

Nei Raunijunho 8th, 2010 at 22:21

Nei Rauni :
Eu gerei uma aplicação Blog usando o gerador de CRUD da mesma forma que você 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
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..
Poderia me passar as dicas para implementar essa relação muitos pra muitos em um crud?

meu código não apareceu aqui, mas era o exemplo do h:selectManyCheckbox

[h:selectManyCheckbox id="categories"]
[f:selectItems value="# categoryController.itemsAvailableSelectMany}"/]
[/h:selectManyCheckbox]

Wanderson Reliquiasjunho 16th, 2010 at 16:36

Parabens !!!!! Muito bom!!!!

eu fiz com netbeans 6.9 e deu tudo certim!!!! muito detalhado e facil de entender…

valeu

Lucasagosto 5th, 2010 at 21:39

Olá Paulo, não consegui implantar a aplicação!!
meu erro:
Deployment localizado em C:\Users\invisivel\Documents\NetBeansProjects\exemplo-jsf\build\web
Initializing…
deploy?path=C:\Users\invisivel\Documents\NetBeansProjects\exemplo-jsf\build\web&name=exemplo-jsf&force=true falhou em GlassFish Server 3
C:\Users\invisivel\Documents\NetBeansProjects\exemplo-jsf\nbproject\build-impl.xml:719: O módulo não foi implementado.
FALHA NA CONSTRUÇÃO (tempo total: 6 segundos)

pode m ajudar???

jafferagosto 21st, 2010 at 18:10

este tutorial nao é desse autor…isto é um tutorial de um livro de java…fazer isso com o trabalho dos outros, chama-se: plágio

EDITADO PELO ADMINISTRADOR: Estou aguardando provas de que o tutorial foi plagiado.

Paulo Canedoagosto 21st, 2010 at 23:52

caro leitor jaffer, publiquei esse artigo no dia 02 de setembro de 2008 (18 dias antes do lancamento oficial do netbeans 6.5), ainda com a versao beta do NetBeans. E tenho diversas formas de provar a data da postagem do mesmo (comentarios proximo a essa data e links que referenciam o post), te garanto que nao copiei esse tutorial de lugar algum, e tambem quero lhe dizer que fiquei muito ofendido com uma acusacao tao seria sem nenhuma prova apresentado.

Gostaria de pedir a voce, que por favor, me diga qual livro eh este em que diz que plagiei para que eu verifica a veracidade dos fatos.

So existem duas possibilidades para isso: 1)houve uma coicidencia enorme na publicacao do tutorial 2)o livro que voce viu cometeu o plagio

Ficaria muito grato se voce me informasse qual o livro esta se referenciando.

olhe esse site fazendo um referencia ao post em menos de um mes apos a publicacao:
http://nb-community-docs.blogspot.com/2008/10/creating-crud-with-jsf-and-ajax-using.html

Vic Bormolinijaneiro 19th, 2011 at 21:24

Excelente post.
Pergunta. Poderia utilizar duas tabelas relacionadas, tipo @OneToMany? Obs. Utilizo o netbeans 6.9
obrigado

José Carlosmaio 5th, 2011 at 22:03

Lucas :Olá Paulo, não consegui implantar a aplicação!!meu erro:Deployment localizado em C:\Users\invisivel\Documents\NetBeansProjects\exemplo-jsf\build\webInitializing…deploy?path=C:\Users\invisivel\Documents\NetBeansProjects\exemplo-jsf\build\web&name=exemplo-jsf&force=true falhou em GlassFish Server 3C:\Users\invisivel\Documents\NetBeansProjects\exemplo-jsf\nbproject\build-impl.xml:719: O módulo não foi implementado.FALHA NA CONSTRUÇÃO (tempo total: 6 segundos)
pode m ajudar???

Também tive este erro paulo, como ajeito?

Vc conseguiu lucas?

Marcelojunho 21st, 2011 at 23:32

Parabéns, show de tutorial!

Leave a comment

Your comment