terça-feira, 31 de maio de 2011

Criando aplicação Java + Hibernate + Firebird



Neste artigo criaremos uma aplicação em Java com conexão com o banco de dados Firebird.



Os pré-requisitos para este tutorial são:
Firebird instalado e rodando.

Ver instalação e Download do Firebird no artigo:

Driver do firebird instalado.

Ver instalação e Download do driver JDBC Firebird no artigo:

 
Base de dados em Firebird.
Ver criação de banco de dados no artigo:



Para criação do nosso primeiro projeto utilizaremos a IDE do NetBeans que é uma aplicação de código aberto feita para auxiliar os desenvolvedores na criação de aplicativos em diferentes plataformas .

Download do NetBeans:


Objeto de conexão do projeto:
 Para mapeamento do banco de dados, utilizaremos a ferramenta de mapeamento Hibernate, que já vem instalado no NetBeans.

O Hibernate é uma ferramenta de mapeamento objeto/relacional para Java. Transforma os dados da estrutura lógica de um banco de dados em objetos definidos pelo desenvolvedor é mais indicado para sistemas que contam com um modelo MVC (prática comum no desenvolvimento de aplicações Java, onde se particiona a aplicação em tres partes, View - Control e Model, ou seja uma camada de interface, uma camada de controle e uma camada de negócio), onde a maior parte da lógica de negócios fica na própria aplicação Java, dependendo pouco de funções específicas do banco de dados.

Após Carregar o NetBeans clique no botão novo projeto conforme a imagem abaixo:

Na caixa novo projeto selecione a pasta Java e em Projetos selecione Aplicativos Java e em seguida clique no botão Aplicativo Java
Em seguida clique em avançar conforme a imagem abaixo:



Na caixa de dialogo para criação de projeto no NetBeans insira as informações necessárias para criação do projeto:
1º Nome do Projeto: pragenda
Nome do projeto a ser desenvolvido.
2º Localização do projeto: EX:      c:\projetos\
Caminho para criação do projeto.
3º Criar classe principal .Main
Clique no botão finalizar conforme a imagem abaixo:




Após criar o projeto é hora de estabelecer conexão com o banco de dados, para isso clique com o botão direito do mouse encima do seu projeto selecione Novo/Outro...  conforme a imagem abaixo:




Abrirá uma caixa com as Categorias e Tipos de arquivo:
Selecione:
Categorias: Hibernate
Tipo de arquivo:
Assistente para Configuração de Hibernate


 
No assistente Selecione:
Nome do arquivo: hibernate.cfg
Clique em Próximo >


Selecione a fonte de dados que o hibernate estabelecerá uma conexão e clique em finalizar

O NetBeans gerou o Hibernate.cfg.xml com a configuração da sua base de dados, abra esse arquivo role até Propriedade variada clique em adicionar e altere o valor da propriedade para thread



Após realizar as alterações no arquivo o mesmo ficará conforme a imagem abaixo:



Salve e feche esta classe para que as alterações tenham efeito conforme a imagem abaixo:


Após criar o assistente de configuração, é hora de criar o assistente de Engenharia reversa do Hibernate, com ele criaremos o XML com as configurações da conexão.

Clique com o botão direito do mouse encima do seu projeto selecione Novo/Outro...  conforme a imagem abaixo:


Na categoria Hibernate, selecione Assistente para Engenharia reversa do Hibernate e clique em Próximo conforme a imagem abaixo:


Logo em seguida abrirá a caixa para inserção do nome do arquivo
Não é preciso mudar o nome clique em Próximo>


Em seguida o assistente vai carregar as tabelas da sua base de dados e disponibilizá-las para você, a imagem abaixo mostra o assistente carregando as tabelas aguarde até o termino.


Agora as tabelas se encontram disponíveis no lado esquerdo da tela, selecione as tabelas depois clique em adicionar todos >>

 
Após adicionar as tabelas clique em finalizar



O Hibernate .reveng criou o XML com mapeamento das suas tabelas conforme a imagem abaixo deixe estas duas classes no pacote padrão do seu projeto.


 
Agora vamos criar os Arquivos de mapeamento do Hibernate e POJOs de banco de dados.
Agora vem a parte mais interessante do projeto, pois ele vai gerar a classe de todas as tabelas que foram selecionadas no hibernate.reveng.xml com todas as configurações de uma vez para você.

Clique com o botão direito do mouse encima do seu projeto selecione Novo/Outro...  conforme a imagem abaixo:




Selecione a Categoria: Hibernate e o Tipo de arquivo: Arquivos de mapeamento do Hibernate e POJOs de banco de dados

Em seguida clique em Próximo.


Repare que já foi selecionado o arquivo de configuração do hibernate e arquivo de engenharia reversa, portanto basta incluir o nome do pacote que as tabelas ficarão situadas, por padrão inseri o nome entidades, mais pode inserir o nome que achar conveniente desde que seja coerente.
Clique em Finalizar conforme a imagem abaixo e aguarde o término da criação das tabelas .

Se você seguiu fielmente o artigo até aqui, foi criado o pacote entidades contendo as classes Java de suas tabelas e os XMLs com todo conteúdo pronto para serem usados, conforme a imagem abaixo:


Agora só falta o criar a classe HibernateUtil para finalizar a parte de conexão do banco.

Clique com o botão direito do mouse encima do seu projeto selecione Novo/Outro...  conforme a imagem abaixo:



Em Categorias selecione Hibernate e em Tipos de arquivo selecione HibernateUtil.java e clique em Próximo> conforme a imagem abaixo:


Renomeie o arquivo para HibernateUtil, crie um pacote chamado util  Finalizar
Conforme a imagem abaixo:


Se tudo ocorreu de forma tranquila a extrutura do seu projeto estará parecida com a imagem abaixo, listando os pacote de conexão com os arquivos Hibernate.XML de conexão do banco, o pacote entidades com as tabelas .java e XML do banco, o pacote com a classe Main.java do seu projeto, e o pacote útil com a classe HibernateUtil.java.



Galera abaixo uma pequena implementação na classe Main.javapara testar sua conexão, caso o banco de dados seja diferente não se esqueça de alterar o nome das tabelas e os campos.
O procedimento descrito ao longo deste artigo é válido para qualquer banco de dados que tenha sido conectado com o Hibernate.
Espero que tenham gostado, qualquer dúvida posta ai!




/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pragenda;
import entidades.Tblendereco; /* import da minha tabela*/
import util.HibernateUtil;  // import da classe util esta classe garante que terá apenas uma sessão aberta no seus sistema com isso temos melhoria de desenpenho no programa
import org.hibernate.Session; //import para uso do Session no hibernate
/**
 *
 * @author Ueliton
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
Tblendereco endereco = new Tblendereco(); // aqui crio o objeto contato do tipo tblcontato
         
          /******* aqui podemos utilizar caixas JOptionPanes para inserir os valores **************/
          endereco.setCodigo(5);
          endereco.setCidade("JUIZ DE FORA");
          endereco.setEstado("MINAS GERAIS");
                  
          Session conexao = HibernateUtil.getSessionFactory().getCurrentSession(); // aqui crio o objeto de conexão que abre a sessão no banco de dados
          conexao.beginTransaction(); // aqui inicio a sessão com o banco
          conexao.save(endereco);  //aqui salvo as informações do objeto na  tabela do banco de dados
          conexao.getTransaction().commit(); // aqui fecho a sessão do meu banco
    }

}

20 comentários:

  1. Até achar este post, estava tendo muito trabalho com a dupla Netbeans 7.1 + Hibernate. Solução, voltei p/ a versão 6.9.1 e segui seu tutorial e tudo funcionou blz. Muito bem explicado, não deixa dúvidas. Parabéns.

    ResponderExcluir
    Respostas
    1. Selecione a fonte de dados que o hibernate estabelecerá uma conexão e clique em finalizar

      COMO EU CRIO ESSA FONTE DE DADOS...???

      Responde aii..
      klebinho.joga10@hotmail.com
      Assunto: FAP - "o nome desse artigo".

      Vlw...

      Excluir
  2. Selecione a fonte de dados que o hibernate estabelecerá uma conexão e clique em finalizar

    COMO EU CRIO ESSA FONTE DE DADOS...???

    Responde aii..
    klebinho.joga10@hotmail.com
    Assunto: FAP - "o nome desse artigo".

    Vlw...
    Kleber.

    ResponderExcluir
    Respostas
    1. Olá,

      a fonte de dados é nome do mapeamento do seu banco de dados.
      no link abaixo eu estou explicando como criar este mapeamento caso tenha dúvida dê uma olhadinha.
      http://basiclogica.blogspot.com.br/2011_10_01_archive.html

      abç

      Excluir
  3. Arquivos de mapeamento do Hibernate e POJOs de banco de dados.

    FAÇO TODO O PROCESSO, MAS NÃO CRIA O PACOTE ENTIDADES, O QUE HÁ DE ERRADO?

    ATT.

    ARNON

    ResponderExcluir
    Respostas
    1. Olá arnon,

      O seu BD está mapeado?
      Quantas tabelas existem no seu bd?

      atualize seu projeto e veja se o pacote é listado.

      qualquer dúvida poste ae!

      Excluir
  4. Boa tarde! Meu nome é Moiseis Lopes e sou novo com java e preciso de ajuda!!!
    Quando vou fazer o penúltimo passo: Arquivos de mapeamento do Hibernate e POJOs de banco de dados dá um erro.
    "A configuração do Hibernate falha com a mensagem: java.lang.NullPointerException" e não me permite continuar. Como posso resolver isso?

    ResponderExcluir
  5. Estou com o mesmo problema, você conseguiu resolve-lo?

    ResponderExcluir
  6. Ao criar as entidades, obtenho o erro java.lang.NullPointerException

    e o botao finalizar nao fica habilitado.

    Tem idéia do que pode ser banco com 39 tabelas.

    ResponderExcluir
    Respostas
    1. Verifique se está inserindo o nome do pacote de destino corretamente e se o mesmo existe, ou ainda se está deixando algum campo nulo ou vazio.
      caso contrário repita o procedimento com calma.

      abç

      Excluir
  7. Mesmo erro dos anônimos, jorge henriqe e marcio lopes acima, to utilizando a versão 7.3.1 do netbeans..

    "A configuração do Hibernate falha com a mensagem: java.lang.NullPointerException"

    Já refiz o processo várias vezes, porém não consigo avançar.



    ResponderExcluir
  8. Estou com o mesmo problema

    "A configuração do Hibernate falha com a mensagem: java.lang.NullPointerException"

    Alguém poderia tentar ajudar?

    ResponderExcluir
  9. Estou com o mesmo erro.
    Ueliton Luis poderia nos ajudar?

    ResponderExcluir
  10. Pessoal fiz uma pergunta no fórum stackoverflow sobre o erro citado por varias pessoas acima e encontrei a solução, precisa atualizar a versão do jaybird para a 2.2.4, foi corrigido o problema nessa versão.

    segue o link do jaybird 2.2.4:

    http://stackoverflow.com/questions/18904451/how-to-configure-jaybird-with-hibernate/18920383?noredirect=1#18920383

    segue o link da pergunta no stackoverflow:

    http://sourceforge.net/projects/firebird/files/firebird-jca-jdbc-driver/2.2.4-SNAPSHOT/

    Abraços

    ResponderExcluir
    Respostas
    1. Muito obrigado meu amigo! Estava desesperado.

      Excluir
  11. Este comentário foi removido pelo autor.

    ResponderExcluir
  12. Ola, estou iniciando meus projetos em JAVA e gostei muito desse tutorial, mas fiquei com uma duvida, vinculei as tabelas q ja tinha criando a minha nova aplicação, OK , blz, tudo bem, mas e se eu precisar acrescentar mais uma campo a uma tabela ja vinculada, como faço pra "atualizar" a tabela q esta em meu codigo java?

    ResponderExcluir
  13. Olá quase consegui meu netbenas é o 8 quando inclui o Hibernate e POJOs de banco de dados, não apareceu o campo pacote e uma mensagem de erro A configuração do Hibernate falha com a mensagem:
    java.lang.NullPointerException
    veja o message.log para obter detalhes sobre a exceção.

    ResponderExcluir