Vous êtes sur la page 1sur 20

TUTORIAL: DESENVOLVIMENTO DE APLICAES COM O HIBERNATE NO NETBEANS

Glauber da Rocha Balthazar, Fbio Mendes Ramos Guimares, Melise Maria Veiga de Paula, Elio Lovisi Filho Bacharelado em Sistemas de Informao Faculdade Metodista Granbery (FMG) Rua Batista de Oliveira, 1145 - 36010-532 - Juiz de Fora MG
{gbalthazar,fguimaraes}@si.granbery.edu.br,elovise@granbery.edu.br, melisepaula@gmail.com,

Abstract. In this article presents the tutorial one that it an approach, of practical form is presented, the use of the Framework of Hibernate persistence in NetBeans. For this, the construction of a guided application is considered the Objects, in Java, that has access a Data base Relationary Object through an architecture developed for this type of application. After that, it is presented all the steps for the necessary configuration of the objectrelationary mapping between the application and the bank. Resumo. Neste artigo apresentado um tutorial que aborda, de forma prtica, a utilizao do Framework de persistncia Hibernate no NetBeans. Para isso, proposto a construo de uma aplicao Orientada a Objetos, em Java, que acesse um Banco de Dados Objeto Relacional por meio de uma arquitetura desenvolvida para este tipo de aplicao. Em seguida, so apresentados todos os passos para a configurao necessria do mapeamento objeto-relacional entre a aplicao e o banco.

INTRODUO
Para PRESSMAN (2005), o software tornou-se uma das foras motoras das empresas, ele quem dirige a tomada de deciso nos negcios. Este fato justifica a crescente importncia que o processo de desenvolvimento de software vem adquirindo nos ambientes organizacionais. Contudo, atualmente, observa-se que apesar da evoluo das ferramentas de apoio ao desenvolvimento de software, esta atividade ainda considerada uma tarefa bastante complexa para os profissionais da rea. Neste contexto, pode-se observa duas vertentes. De um lado, os usurios vm se tornado cada vez mais exigentes, fato que aumenta a complexidade dos requisitos e a expectativa em relao aos resultados esperados. Alm disso, as empresas tm percebido que um sistema de informao pode ser o seu diferencial perante suas concorrentes, pois a gerencia das informaes e a garantia da segurana e disponibilidade destas de forma rpida, confivel e sigilosa em qualquer ponto a qualquer momento permite que diretores, gerentes e vendedores tomem decises de forma mais precisa e rpida [OLIVEIRA]. Por outro lado, diversas tecnologias vm surgindo e amadurecendo, fornecendo ao desenvolvedor uma variedade de linguagens, ferramentas e softwares que o aproximem desta realidade. Um exemplo disto a Orientao a Objetos que vem sendo explorada no intuito de encontrar padres para desenvolvimento de softwares de forma mais simples com uma alta manutenibilidade e reusabilidade dos cdigos escritos.

Considerando o cenrio descrito, este artigo pretende apresentar, de forma prtica uma viso de como desenvolver uma aplicao orientada a objetos com acesso a um banco de dados objeto-relacional. Para tanto, sero empregados a linguagem de programao JAVA e o ambiente de desenvolvimento NetBeans como IDE (Interface Desktop Environment). Alm disso, o Hibernate ser usado como a camada de persistncia que dever fazer a interface entre a aplicao e o sistema gerenciador de banco de dados PostegreSQL. O artigo est organizado da seguinte maneira, na seo 2, descrita a Arquitetura DAO (Data Access Object) que ser utilizada para a construo das classes de mapeamento e gerencia das informaes para o Hibernate. Na seo 3, descrita a aplicao a ser considerada nos exemplos prticos. Os captulo seguintes exploraram a prtica no NetBeans na construo de aplicaes.

A ARQUITETURA DAO
Para a construo da aplicao, vamos adaptar o padro proposto por [FAERMAN] na revista Java Magazine de Janeiro de 2005, que descreve uma poltica para a construo de aplicaes que utilizam um Framework para persistncia dos dados. Ser empregada a arquitetura DAO (Data Access Object), onde um objeto intermedirio responsvel pelo acesso aos dados do sistema, independente do SGBD empregado. Na figura 1, apresenta-se a arquitetura DAO utilizada para a construo da aplicao, definindo-se o relacionamento entre as classes que iro compor a estrutura de persistncia do Hibernate.

Action (Aplicao)

FactoryClasses

Instancia Implementa

hibernate.cfg.xml

DAOFactory

Implementa

HibernateDAOFactory

Instancia
ClasseDAO ClasseHibernateDAO HibernateConfiguration

Aplicativo Classe Interface XML Driver Banco de Dados

Abre Conecta

BD

Session

Figura 1 Modelo da arquitetura DAO a ser utilizada neste tutorial

O banco de dados a ser utilizado assim como o nome de usurio e a senha para acesso e demais propriedades do banco so mapeados para um arquivo XML denominado hibernate.cfg.xml, a partir de uma Factory de Classes. O HibernateDAOFactory ser a classe responsvel por gerar instncias dos objetos a serem utilizados na aplicao. Estes objetos so descritos na arquitetura de forma genrica como ClasseHibernateDAO (na aplicao ser visto como FuncionrioHibernateDAO) e estes implementaro as suas respectivas interfaces, tambm descritas de forma genrica como ClasseDAO (na aplicao como FuncionarioDAO) que contm todas as assinaturas dos mtodos de gerncia dos objetos como incluir (persistir), excluir, dentre outros. A partir deste ponto, aberta uma seo com o banco atravs do HibernateConfiguration e os mtodos chamados podero ser executados.

A APLICAO
Com o objetivo de manter um aspecto tcnico e prtico deste trabalho, ser considerada uma aplicao contendo apenas uma classe, Funcionrio. A partir desta classe, sero construdas as principais funcionalidades de gerncia de objetos como persistir, recuperar apenas um objeto, recuperar todos os objetos persistidos e excluso. Desta forma, todos os atributos para esta classe so apresentados na figura 2.

Funcionario
private String nome; private int idade; private String cpf;

Figura 2 Classe Funcionrio

Para a arquitetura utilizada como modelo de desenvolvimento desta aplicao, os mtodos de persistncia e recuperao dos objetos ficaro escritos em uma classe especfica, deixando apenas na classe Funcionario os atributos e seus mtodos de acesso alm do construtor default, apresentando desta forma uma classe com todas as 3

caractersticas POJO (Plain Old Java Object) para manipulao do Framework de persistncia Hibernate. O banco de dados utilizado ser o PostgreSQL por ser um banco objetorelacional e apresentar as caractersticas de estabilidade e confiabilidade. Desta forma, os objetos gerados pela aplicao sero persistidos e recuperados no banco atravs do Hibernate.

CONSTRUINDO E GERENCIANDO UM PROJETO NO NETBEANS


Para se construir um novo projeto no NetBeans v at o menu File e escolha New Project. Em seguida, Na janela New Project v at a lista Categories, escolha General e na lista Projects escolha Java Application e em seguida clique em Next. Na tela seguinte New Java Application, digite o nome do projeto e defina o diretrio do projeto, na caixa Project Name. Neste exemplo digite MiniCursoHibernatePratica. Aps, direcione o Project Location para C:\minicursoHibernate e desmarque a caixa de opo referente ao Create Main Class como mostrado na figura 3.

Figura 3 Definio do nome e diretrio do projeto

Por ltimo clique em Finish.

GERENCIANDO LIBRARYS NO NETBEANS 5.0


Para a utilizao das bibliotecas do Hibernate e do driver JDBC que far o acesso ao banco, ser necessria a construo de Librarys no NetBeans para o armazenamento e organizao destes arquivos. Para isso, deve-se criar duas Librarys, uma para o Hibernate e outra para o driver JDBC do PostgreSQL. O NetBeans permite a construo destas Librarys atravs da opo Library Manager no menu Tools. Ao escolher esta opo a janela Library Manager ser aberta e basta clicar no boto New Library... no canto inferior esquerdo da mesma como na figura 4. 4

Figura 4 Construo de novas librarys

Agora, informe o nome para a Library na caixa Library Name. Para este exemplo, digite Hibernate e clique em ok. Com a Library j construda, adicione agora as bibliotecas (.Jar) do Hibernate 3.1. Para isso, clique no boto Add Jar/Folder... Direcione para o local em que o Hibernate foi descompactado e localize o diretrio hibernate-3.1. Dentro dele localize o arquivo hibernate3.jar e adicione-o clicando nele e em seguida no boto Open. Veja na figura 5 que o ClassPath foi preenchido.

Figura 4 Construo de novas Librarys no NetBeans

Figura 5 Preenchimento do ClassPath com o arquivo hivernate3.jar

Mas ainda faltam as demais Librarys existentes no diretrio lib do hibernate. Para tanto, volte no boto add Jar/Folder... e direcione para o sub diretrio lib existente no diretrio hibernate-3.1 e adicione todas as librarys existentes (todos os arquivos jar) e em seguida clicando no boto Open, veja na figura 6:
Figura 6 Seleo das demais bibliotecas do Hibernate na pasta Lib

Figura 6 Seleo das demais bibliotecas do Hibernate na pasta Lib

Neste momento todas as librarys do hibernate foram adicionadas a Library criada anteriormente. Por fim, clique em Ok para terminar a construo desta nova Library no NetBeans. Repita agora o mesmo procedimento para a construo de uma Library para o driver JDBC do PostgreSQL. D o nome para ela de JDBCPostgreSQL como na figura 7.

Figura 7 Definio do nome da Library

Aps isso, adicione o arquivo postgresql-8.2dev-501.jdbc2.jar . Por ltimo falta apenas adicionar as duas Librarys criadas anteriormente ao projeto. Para isso, v ao inspetor de Projetos e clique com o boto direito sobre as Libraries e escolha Add Library como na figura 8.

Figura 8 Adicionando uma Library ao projeto

Escolha agora as duas Librarys criadas anteriormente e clique no boto Add Libary. Aguarde um momento enquanto o NetBeans atualiza o ClassPath e veja que 6

todas as bibliotecas do Hibernate e do Driver do PostgreSQL foram adicionadas ao seu projeto atravs da figura 9.

Figura 9 Visualizando as bibliotecas adicionadas ao projeto

CONSTRUINDO A CLASSE FUNCIONRIO


A classe Funcionrio a uma classe de negcio da aplicao e ser mapeada no Hibernate como tabelas no banco de dados. Classes deste tipo deve estar dentro de um padro definido como POJO, que uma classe que contm todos os atributos encapsulados e definidos os seus mtodos de acesso get e set alm do mtodo construtor default. Para isso, clique com o boto direito em cima do Default Package e escolha New e logo em seguida File/Folder, como ilustrado na figura 10.

Figura 10 Construindo uma nova classe

A janela New File ser aberta, nela visualize a lista das Categories e escolha Java Classes e na lista de Files Types escolha Java Class, veja a figura 11.

Figura 11 Escolhendo o tipo de arquivo

Em seguida, veja a figura 12, clique em Next. Na tela seguinte digite o nome para a classe (Funcionario) e clique em Finish.

Figura 12 Definindo o nome da Classe

Pronto, a classe Funcionario foi criada. Agora, complete esta classe com os atributos descritos na figura 13:

Figura 13 Atributos da classe Funcionario

Construa agora os mtodos getters e setters para cada um deles. Para isso, clique primeiramente em cima de qualquer um dos atributos e v at o menu Refactor e escolha Encapsulate Fields... Na tela Encapsulate Fields Funcionario, marque todos os mtodos a serem construdos e desmarque a caixa Preview all changes, veja na figura 14:

Figura 14 Seleo dos mtodos a serem construdos

Em seguida clique em Next e pronto, todos os mtodos de get e de set foram criados.

CONSTRUINDO O MAPEAMENTO DO FUNCIONRIO


Para utilizao da camada de persistncia, necessrio indicar qual(is) tabela(s) do banco de dados corresponde classe de negcio. Isso feito por meio de um mapeamento que indica essa correspondncia. Neste artigo, visando facilitar o entendimento do leitor, o mapeamento ser feito por meio de um arquivo XML. Outra forma de mapeamento pode ser vista em BAUER, KING (2005).

Para realizar o mapeamento proposto, crie um arquivo XML, selecionando com o boto direito o Default Package e escolhendo a opo New e em seguida File/Folder, veja na figura 15:

Figura 15 Construo do arquivo XML

Na janela seguinte, New File apresentado na figura 16, nas Categories escolha XML e na lista Files Type escolha XML Document:

Figura 16 Escolhendo um arquivo XML

Em seguida, clique em Next. Na ltima tela, como nome para este arquivo, digite Funcionario.hbm. Por ltimo clique em Next e na prxima tela em Finish. Veja a figura 17.

10

Figura 17 Trmino da construo do arquivo XML

Agora, preencha este arquivo como mostrado na figura 18:

Figura 18 Configurao do arquivo de mapeamento

No mapeamento acima, a classe Funcionario da aplicao relacionada tabela funcionario do banco de dados. As tags property indicam o mapeamento dos atributos da classe com os campos da tabela, descrevendo tambm os valores que podem ser atribudos aos mesmos.

CONSTRUINDO O ARQUIVO HIBERNATE.CFG.XML


Seguindo as instrues dispostas na seo 5 deste artigo, construa um novo arquivo XML e d o nome para ele de: hibernate.cfg.xml Em seguida, digite o cdigo da figura 19: 11

Figura 19 Configurao do arquivo hibernate.cfg.xml

No cdigo acima so definidos, entre outros, o driver de conexo, o usurio e a senha de acesso, bem como os arquivos que descrevem o mapeamento das classes de negcio.

CONSTRUINDO A FBRICA DE CLASSES FACTORYCLASS


Para evitar a dependncia entre o aplicativo principal e a implementao concreta do DAO, iremos empregar o padro Factory Method, no qual um objeto responsvel pela criao de outros, fabricando-os. [FAERMAN, 2005] Sendo assim, nosso prximo passo consiste em construir a classe FactoryClass para gerncia do Banco de Dados a ser utilizado. Para isso, crie uma nova classe e d o nome para ela de FactoryClasses. Em seguida, digite o cdigo mostrado na figura 20 para esta classe:

Figura 20 Configurao do arquivo.FactoryClasses.java

12

Obs.: Neste ponto, algumas linhas do seu cdigo iro ficar marcadas de vermelho. No se preocupe, elas indicam apenas que as demais classes ainda no foram construdas, isso ser feito nos prximos passos. Agora, crie a interface para a construo do FuncionarioDAO. Chame esta interface de DAOFactory e digite o cdigo da figura 21 para ela:

Figura 21 Configurao da interface DAOFactory

Aps ter construdo a interface DAOFactory, vamos implement-la em uma classe. Para isso, crie uma nova classe e a chame de HibernateDAOFactory. Nesta classe, vista na figura 22, implemente a interface DAOFactory e em seguida, sobrescreva o mtodo criarFuncionarioDAO( ) adicionando a ele a funcionalidade de instncia do FuncionarioHibernateDAO( ).

Figura 22 Configurao da classe HibernateDAOFactory

CONSTRUINDO OS DAOS
Vamos, primeiramente, construir a interface do Funcionario. Nela ns teremos as assinaturas dos mtodos de gerenciamento um novo funcionrio. As implementaes sero realizadas posteriormente. Para isso, crie uma nova interface e chame-a de FuncionarioDAO e adicione a ela as seguintes assinaturas de mtodos descritas na figura 23:

13

Figura 23 Assinaturas dos mtodos do FuncionarioDAO

O mtodo carregarUm ir retornar um funcionrio que possua o nome especificado no parmetro. J o mtodo carregarTudoOrdenadoNome ir recuperar todos os funcionrios existentes no banco de dados, ordenados pelo atributo nome. Os mtodos gravar e excluir realizam as funes de insero e excluso para os objetos que forem definidos como seus parmetros. Como segundo passo, iremos construir a classe FuncionarioHibernateDAO. Para isso, construa uma nova classe e d este nome para ela. Veja o cdigo na figura 24:

Figura 24 Implementao dos mtodos de gerenciamento da classe Funcionario

14

Agora, vamos escrever os cdigos de cada um destes mtodos, veja nas figuras abaixo: a) Mtodo carregaUm, visto na figura 25:

Figura 25 Implementao do mtodo carregaUm

As classes Session e Transaction controlam, respectivamente, a abertura e o fechamento de sesses de acesso ao banco de dados, e o incio e a concluso de transaes. Emprega-se a classe Criteria para definir-se critrios de busca de objetos. Esses critrios podem ser definidos utilizando a classe Expression. [BAUER & KING, 2005] No cdigo anterior, definido um critrio de busca de objetos da classe Funcionario, retornando somente aquele que possuir o atributo nome igual ao parmetro informado ao mtodo. b) Mtodo carregaTudoOrdenadoPorNome, visto na figura 26:

Figura 26 Implementao do mtodo carregaTudoOrdenadoPorNome

No mtodo acima retorna-se uma lista de objetos da classe Funcionario, ordenados pelo atributo nome. c) Mtodo gravar, visto na figura 27:

Figura 27 Implementao do mtodo gravar

J neste mtodo, deve-se informar um objeto da classe Funcionario o qual ser persistido no banco de dados empregando-se o mtodo saveOrUpdate. d) Mtodo excluir, visto na figura 28: 15

Figura 28 Implementao do mtodo excluir

Finalmente, no mtodo acima, um objeto da classe Funcionario excludo do banco de dados por meio do mtodo delete.

CONSTRUINDO O HIBERNATE (HIBERNATECONFIGURACAO)

DE

CONFIGURAO

Como ltimo passo dever ser construdo o arquivo que permitir abrir uma sesso com o banco. Este arquivo uma classe que chama-se HibernateConfigurao, com os mtodos openSession e criaSessionFactory. O primeiro responsvel por verificar se j existe uma sessionFactory instanciada na aplicao. Se sim, ele retorna esta sesso para a aplicao que requisitar. O segundo mtodo faz o inverso, caso a session esteja instanciada, ele ser responsvel por permitir a instncia de uma nova session, baseando-se no arquivo hibernate.cfg.xml, definido anteriormente. Para isso construa uma nova classe e chame-a de HibernateConfigurao e complete-a de acordo com a figura 29, veja:

16

Figura 29 Configurao do arquivo HibernateConfiguracao.java

CONSTRUINDO UM ARQUIVO DE LOG


Para acompanhar a execuo do sistema, e facilitar a identificao de possveis erros, ser empregado o framework log4j. Para isso, deve-se criar um arquivo com as suas configuraes. Para construir este arquivo, proceda da seguinte forma: V at o menu File e escolha New File Na janela New File, escolha nas categorias Other e na lista de Files Types Properties File. Logo em seguida, clique em Next. Em seguida, digite para o nome do arquivo: log4j e clique em Finish. Agora, copie para dentro deste arquivo o cdigo descrito na figura 30:

17

Figura 30 Configurao do arquivo log4j.properties

CONSTRUINDO A APLICAO PRINCIPAL


Crie uma classe AplicacaoTexto.java executvel (Java Main Class) e chame-a de

Em seguida, adicione o cdigo da figura 31 esta classe:

Figura 31 Cdigo fonte da aplicao

Agora, para persistir um novo Funcionrio, digite o cdigo da figura 32, veja:

Figura 32 Cdigo para persistir um novo funcionrio

18

Para listar todos os funcionrios, digite o cdigo da figura 33:

Figura 33 Cdigo para listar todos os funcionrios

Para carregar apenas os dados de um funcionrio digite o cdigo da figura 34:

Figura 34 Cdigo para listar apenas um funcionrio

E para excluir um funcionrio, digite o cdigo da figura 35:

Figura 35 Cdigo para excluir um funcionrio

19

CONCLUSO
pO presente artigo procurou demonstrar de forma prtica, a implementao de uma aplicao simples em Java utilizando a camada de persistncia Hibernate para o armazenamento e manipulao de objetos em um SGBD OR. Para isso, o artigo foi escrito sobre a forma de um tutorial, apresentando todos os passos necessrios para a construo deste tipo de aplicao comeando desde a escrita das classes POJO, passando pelo mapeamento objeto-relacional e a construo dos mtodos de persistncia que utilizam o Hibernate para a manipulao das informaes. Alm disso, seguiu-se uma arquitetura (padro) de desenvolvimento, atravs de um modelo proposto por Julio Ferman, na revista Java Magazine, e adaptado para a soluo deste artigo, procurando seguir uma forma de desenvolvimento que se aplique, de forma genrica, a todas as classes de qualquer sistema que venha a ser desenvolvido em Java e que faa uso do Hibernate. Com isso, o artigo mostra como organizar as classes de negcio existentes nas aplicaes com o objetivo de prepar-las para a persistncia em um banco de dados, a forma de construir uma aplicao seguindo uma arquitetura de desenvolvimento prpria para persistncia de objetos em bancos relacionais sem gerar cdigos desnecessrios, confusos e mal organizados e como aplicar os mtodos de gerencia (persistir, recuperar, dentre outros) em uma aplicao explorando ao mximo a produtividade da mesma sem que isso gere custos exagerados de processamentos para a mquina, tornando a aplicao leve e rpida, mesmo se tratando de mapeamento de informaes entre um banco relacional e uma aplicao orientada a objetos.

BIBLIOGRAFIA
BAUER, C. e KING, G. Hibernate em ao. Primeira Edio. 2005: Rio de Janeiro, Editora Cincia Moderna. EMILO, C. e SEVER, P. NetBeans IDE 4.1 Para desenvolvedores que utilizam a tecnologia Java. Primeira Edio. 2005: Rio de Janeiro, Editora Brasport. OLIVEIRA, Djalma P. R. de. Sistemas de Informaes gerenciais: estratgias, tticas operacionais. Stima Edio. So Paulo: Atlas, 2001. PRESSMAN, R. Engenharia de Software. Sexta Edio. McGraw-Hill, 2005. SILBERSCHATZ, Abraham, KORTH, Henry F. e SUDARSHA, S. Sistema de Banco de Dados. Terceira Edio. So Paulo: Makron Books, 1999. FAERMAN, Julio. Design Patterns Aplicados. Java Magazine, Rio de Janeiro, edio 20, p. 52-58, jan. 2005.

20

Vous aimerez peut-être aussi