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.

27 thoughts on “Criando um CRUD em JSF e Ajax com o NetBeans 6.5 Beta

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

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

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

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

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

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

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

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

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

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

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

  13. Wanderson Reliquias

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

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

    valeu

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

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

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

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

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

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>