Você está na página 1de 54

Camilo Lopes

Sobre o Autor

Baiano de 23 anos, Camilo Lopes trabalha


com Tecnologia de Informao desde 2003,
possui experincia em desenvolvimento,
analise de requisitos, modelagem de dados,
servidores de aplicaes, banco de dados e
linguagens de programao. Trabalhou de
2004-2006 como Freelance desenvolvendo
sistemas em VB6 e PHP 4 para pequenas
empresas. Programador certicado pela Sun
Microsystems - SCJP 5 em 2007. Bacharelado
em Anlise de Sistemas, Ps-Graduado em
Gesto Estratgia de Negcios. Trabalhou de 2008-Julho/2010 na IBM
Brazil como Analista Programador Java em projetos Internacionais. Em
2009 foi nomeado Embaixador Tcnico IBM onde ministrou palestras
e mini-cursos em faculdades/universidades nas horas livres. Atualmente trabalha na HP Brazil como Software Engineer no Enterprise
Computing Lab (ECL), onde responsvel pelo design, desenvolvimento, manuteno, testing, qualidade do Software utilizando a tecnologia
Java. Nas horas livres gosta de escrever livros tcnicos, artigos para as
revistas Java Magazine, MundoJ (antiga MundoJava) e Espirto Livre.
Possui artigos Java no UOL IMasters e InfoQBrasil. Em seu blog www.
camilolopes.com.br h diversos posts sobre Java, Carreira Prossional,
Ingls, Banco de dados etc que so atualizados semanalmente.

Contato: Envie sua sugesto, crtica, elogio ou suas dvidas para o e-mail do autor: camilo@camilolopes.com.
br. Visite o website: www.camilolopes.com.br.

Agradecimentos

Quero agradecer a um grande amigo, que contribuiu fortemente para


que este projeto fosse publicado, o autor Edson Gonalves; agradeo a
ele pelas dicas, crticas, elogios e incentivo nas horas mais difceis,
quando os verdadeiros amigos aparecem e te mostram o caminho. Ao
Paulo, diretor da Cincia Moderna, pela oportunidade, e a toda a equipe
editorial, que trabalhou duro nas devidas correes e sugestes.
Quero agradecer a uma gaucha que s uma uma grande amiga desde
de 2007 a qual contribuiu inumeras vezes na minha carreira desde quando nos conhecemos no GUJ (Grupo de Usurios Java www.guj.com.br)
e eu ainda dava Hello World no Java, falo da Veronica Nunes, a qual
dedico esta obra.
Ariane Camori, uma paulista que pediu meu contato para tirar uma
dvida sobre Java e com o passar do tempo se tornou uma pessoa
especial, qual no poderia deixar de agradecer, pois a Nany tem
participao direta e indireta neste resultado; obrigado pelo apoio, dicas e conselhos.
No posso esquecer de dois amigos que conheci ainda em formao
do meu bacharelado e que estudvamos juntos ingls via Skype e discutamos todos os dias assuntos de T.I so eles: Alberto Leal e o Mario
Razec. Abraos, meus amigos, vocs so responsveis por este trabalho, pois quando um estava desmotivado, o outro estava ali para dar
aquele flego e no deixar a peteca cair.

Dedicatria

Dedico este trabalho, o qual batizei de meu segundo filho, aos


meus avs, Sr. Camilo Medeiros e Sra. Benigna Sales, e minha me,
Sra.Celidalva Medeiros. Vocs so os responsveis por tudo de bom
que tem acontecido na minha vida e sou eternamente grato. Este
trabalho para vocs. No poderia deixar de dedicar a mais uma
pessoa que contribuiu positivamente nas minhas conquistas com
incentivo, opinies e no me deixou desistir quando pensei abandonar.
Refiro-me minha namorada/noiva Efignia Maurcio; agradeo a voc
eternamente pelo que fez por mim, que Deus te abenoe, esta obra
sua tambm. Uma pessoa que abriu as portas e que jamais vou esquecer no dia que me fez o convite para fazer parte da IBM e os helps mais
como amigo que como colega de trabalho, eu dedico este trabalho,
falo do Juliano Martins.

Como nasceu este guia?

Bem, tive a ideia de criar este guia a partir de uma necessidade e das
dificuldades que tive quando iniciei meus estudos com JEE, logo aps
ter visto JSP & Servlet. Buscava um livro que ensinasse de modo
prtico os frameworks mais usados no mercado, porm, queria um
livro que no fosse muito extenso, mas bem focado naquilo que seria
apresentado e com exerccios interessantes que eu pudesse praticar.
Foi muito difcil encontrar obras com esse perfil, e eu no concordava
muito em ter que comprar um livro para todos os frameworks que teria
que aprender, sendo que para um iniciante, em primeiro momento, o
mais importante ver o bsico e fazer a fuso de uma tecnologia com
outra. Exemplo: JSF com Hibernate. A partir desta dificuldade que passei, resolvi criar uma obra para ajudar aqueles que esto chegando ao
mundo JEE e se sentem perdidos em tantas siglas: Struts, Jboss Seam,
JSF, Hibernate, Ibatis etc. Eu j tive minhas confuses e no conseguia entender o porqu de cada um e como eles iam trabalhar juntos
em uma aplicao JEE, pois quando comprava um livro sobre JSF este
no abordava nada de Hibernate, e o inverso tambm era vlido, sem
falar que os exerccios no eram nada prticos e prazerosos de fazer.
Diante tudo isso, nasceu este guia, para suprir esse buraco na nossa vida de programador.
Espero atingir este objetivo.

Sobre o Livro

O guia foi desenvolvido com o objetivo de orient-lo no aprendizado


prtico de como desenvolver aplicaes JEE usando os frameworks mais
cotados no mercado. Neste caso buscamos unir um pouco de teoria com
a prtica atravs de aplicaes Java e JEE. No nosso objetivo esgotar
todas as caractersticas de um framework ou tecnologias que sero vistas
aqui, mas buscaremos explorar o suficiente para permitir ao leitor criar
aplicaes reais.
Usamos uma linguagem um pouco coloquial em algumas partes do
livro, pois acreditamos que usar a primeira pessoa ou alguns termos
informais pode de fato ajudar a compreender assuntos mais complexos para um iniciante, e o nosso objetivo facilitar a assimilao ao
mximo possvel.

Pblico-alvo

Quem pode ler? Essa pergunta que todo leitor faz; ser que eu posso
ler esse livro? No queremos que voc, leitor, compre um exemplar se no
est preparado. O livro recomendado para aquele programador que est
acabando de dar seus primeiros passos em Servlet & JSP e pretende agora
ir para o mundo dos frameworks, j que 99% das vagas de emprego
pedem conhecimento de, no mnimo, 2 ou 3 frameworks. Se voc est
nessa situao e deseja aprender de modo prtico alguns frameworks
JEE mais usados no mercado, este livro para voc. Caso esteja ainda
nos primeiros passos do Java/JEE, coloque o livro novamente na prateleira e no o compre.

O que no vou aprender

- Voc no vai aprender o bsico do Java, Orientao a Objetos,


JEE Bsico;
- No aprender a instalar e configurar um ambiente de desenvolvimento Java;
- No vai terminar o livro um expert nos frameworks, mas conhecer o suficiente para criar uma aplicao;
- No se tornar um DBA, mas vai saber usar o banco de dados
nas suas aplicaes;
- No ser explicado JSE;
- No esgotaremos todo o contedo das tecnologias apresentadas, uma vez que este no o objetivo principal do livro.

O que vou aprender

Voc vai aprender como usar Hibernate em aplicaes Java/JEE e


criar aplicaes JEE usando JSF. Alm disso, vamos envolver um pouco
de banco de dados, modelagem etc. Enfim, trazer um cenrio real para
dentro do livro. E no haver atividades como exerccios de sala.
No vamos torn-lo um especialista nos frameworks (preciso reforar isso para ter certeza de que no esqueceu), mas queremos muito
que, ao trmino do livro, voc possa criar suas aplicaes usando as
tecnologias abordadas aqui. Claro que para requisitos mais complexos
ter que recorrer a uma bibliografia mais aprofundada no assunto. Para
ter ideia, existem livros com mais de 400 pginas somente tratando de
Hibernate, JSF etc. Ento, no seria nada legal dizer que nesse pequeno guia teria tudo sobre cada um. Mas, aqui h o suficiente para sair
do 0 x 0 e comear a desenvolver aplicaes usando os frameworks
apresentados.

Como ler o livro?

Bem, apesar de ter uma sequncia de captulos, no h, de fato, uma


obrigatoriedade em l-los na sequncia. Se voc j viu Hibernate, mas
no sabe integr-lo com JSF, ento no precisa ler os tpicos referentes
ao bsico do Hibernate. Recomendamos dar uma folheada no livro antes
de iniciar.
Agora, se for iniciante, pode ler em sequncia. Porm, quando for
desenvolver aplicaes JEE ter que ir para o captulo JSF para entender
como JSF trabalha. Se no o fizer, s vai ficar digitando os codes sem
saber o significado, e isso no bom para seu aprendizado. Citamos JSF
porque todos os exemplos de JEE usam o framework JavaServerFaces.

Metodologia adotada

Como escrevemos um livro diferente, a metodologia de leitura tambm deve ser diferente, uma vez que queremos torn-lo um programador
prtico. Aqui fizemos diferente, voc vai acabar lendo todos os captulos sem perceber que terminou o livro, uma vez que bem comum requisitarmos que v para o captulo X e aprenda tecnologia Y antes de
continuar e ver que ser impossvel ir adiante se no fizer o que indicamos; fizemos isso para ter a certeza de que voc aprendeu todas as
tecnologias apresentadas. Ento, esquea aquela ordem de leitura
sequencial presa de captulos. Mas no fique preocupado, porque
isso no o deixar confuso, pelo contrrio, achamos que ser mais divertido e menos cansativo.

Tra
balho do dia - O que isso?
rabalho

Cansamos daqueles livros tradicionais que muitas vezes ensinam ao


leitor como somar 2 + 3 e no exerccio perguntam quanto 3 + 2.
Voc j entendeu aonde queremos chegar, no ? Ento, criamos este
tpico para ser diferente e realmente despertar o interesse de voc programador querer resolver o problema.
Quando adotamos este mtodo no pensamos momento nenhum em
pedir algo que no fosse possvel implementar. Pelo contrrio, trabalho
do dia tem como objetivo de voc programador poder testar seus conhecimentos adquiridos no somente no tpico em questo, mas consultar outros captulos e o apndice do livro. Assim, voc consegue ler
todo o livro de forma divertida e prtica, pois vai aprendendo medida
que programa. Ento, no se espante se voc tiver que consultar o
apndice de Banco de Dados, modelagem de Dados etc. para poder
implementar todos os requisitos para seu trabalho do dia.
Sem falar que o outro objetivo deste tpico foi transmitir o dia a dia
de um desenvolvedor, pois saber resolver problemas a maior habilidade que voc deve ter antes de querer dominar os inmeros frameworks
disponveis no mercado. Em funo disso, no fornecemos as respostas
para as solues, pois voc, como bom profissional, tem que ter a capacidade de confiar na sua soluo e saber se ela est atendendo todos os
requisitos do cliente.

Laboratrio On-line

O autor criou um laboratrio on-line, onde o leitor pode fazer o


download dos exemplos usados no livro, como tambm dos frameworks
e algumas ferramentas. Basta acessar:
http://lab.camilolopes.com.br.

Do autor para os leitores

Primeiramente, quero agradecer a voc por ter confiado em mais um


dos meus trabalhos e ter adquirido este exemplar. Fico muito grato e
feliz. Quando criei este projeto, em momento nenhum pensei em faz-lo
um best-seller. Para quem j acompanha meus trabalhos sabe que sempre estou direcionado a ajudar aqueles que esto no incio ou chegando
a um mundo novo, neste caso aqui JEE com Frameworks, e me sinto
muito feliz em poder contribuir de alguma forma para o desenvolvimento
do prximo, uma vez que quando dei meus primeiros passos tive apoio
de vrias pessoas que tiveram a pacincia e disponibilidade para ajudar
aquele mero iniciante. E hoje poder retribuir da mesma forma que fizeram
comigo algo que fao por prazer. Ento, quando puder, sempre envie
um feedback, este muito importante para os prximos projetos, seja
uma crtica, um elogio, sempre ser vlido. Obrigado e espero que tenha
uma boa leitura e que ao trmino do livro tenha aprendido de fato a
desenvolver aplicaes usando frameworks JEE (Hibernate e JSF).

Sumrio

Sobre o Autor ................................................................... III


Agradecimentos ............................................................... V
Dedicatria ..................................................................... VII
Como nasceu este guia? ................................................... IX
Sobre o Livro .................................................................... XI
Pblico-alvo ................................................................... XIII
O que no vou aprender ................................................. XV
O que vou aprender ....................................................... XVII
Como ler o livro? ............................................................. XIX
Metodologia adotada ....................................................... XXI
Tra
balho do dia - O que isso? ..................................... XXIII
rabalho
Laboratrio On-line ....................................................... XXV
Do autor para os leitores .............................................. XXVII
Captulo 1
Introduo ....................................................................... 1
O que Hibernate? ....................................................................... 1
difcil? ................................................................................. 2
Ambiente de Desenvolvimento ........................................................ 3
Preparando o ambiente: Eclipse ................................................. 3
Configurando o Ambiente: Hibernate ........................................... 4

XXX

Guia Prtico Construindo Aplicaes JEE com Frameworks

Criando a biblioteca ................................................................. 5


Configurando o JSF ................................................................. 9
Instalando/Configurando Jboss tools ........................................... 9
Banco de dados .......................................................................... 10
Configurando BD MySQL no Eclipse ......................................... 11
Concluindo ...................................................................... 11

Captulo 2
Hibernate ...................................................................... 13
Conhecendo a estrutura do Hibernate ............................................. 13
Preparando ambiente Hibernate Eclipse ......................................... 17
Adicionando Hibernate ao Projeto no Eclipse ............................. 18
Criando uma library/biblioteca Hibernate .................................. 20
Adicionando a library ao projeto .............................................. 21
Aplicao Java ........................................................................... 22
Desenvolvimento ................................................................... 24
Mapeamento Hibernate .......................................................... 28
Testando a aaplicao
plicao ........................................................ 31
Hibernate Query Language - HQL .................................................. 31
Como funciona HQL? ............................................................. 33
Criando sua primeira aplicao com HQL .................................. 34
Habilitando log SQL ............................................................... 36
Usando HQL ......................................................................... 36
Usando clauses e aliases ........................................................ 37
Restries ............................................................................ 38
HQL delete ........................................................................... 39

Sumrio

XXXI

unique result ......................................................................... 40


Ordenando order by ............................................................ 40
Mtodos Utilitrios ................................................................. 41
Update HQL .......................................................................... 42
Revisando HQL ..................................................................... 43
Tra
balho do dia Ja
va com HQL ................................................ 45
rabalho
Java
Aplicao JEE com HQL + JSF ................................................ 45
A nossa aplicao ............................................................ 46
Iniciando o Projeto Preparando o ambiente antes de programar . 47
Desenvolvendo ................................................................ 47
Desenvolvendo as pginas JSF ................................................ 51
Concluso ....................................................................... 56
Tra
balho do dia Aplicao .................................................... 57
rabalho

Captulo 3
Aplicao JEE + JSF ....................................................... 59
Contexto ............................................................................... 59
Criando o Projeto .................................................................. 60
DataBase ............................................................................. 60
Desenvolvimento .............................................................. 61
Classe UniversidadeDAO.java .................................................. 66
Criando Controlador ............................................................... 67
Classe ControllerProf.java ....................................................... 68
Criando os Mapeamentos ........................................................ 69
Configurando o Hibernate com DB ............................................ 72
Criando os Views JSF ............................................................. 74

XXXII

Guia Prtico Construindo Aplicaes JEE com Frameworks

Criando o ManageBean .......................................................... 77


Navigation Rules ................................................................... 79
Criando as pages JSF ............................................................ 82
Testando a aaplicao
plicao ............................................................. 85
Concluso ....................................................................... 85
Tra
balho do dia ..................................................................... 86
rabalho

Captulo 4
Criteria .......................................................................... 89
Ordenando resultados query .................................................... 93
Realizando Projees com Criteria ........................................... 93
Aplicaes Java com Criteria ....................................................... 95
Aplicaes JavaEE com Criteria .................................................... 99
Desenvolvimento ................................................................. 101
Tra
balho do dia ................................................................... 109
rabalho

Captulo 5
Aplicao JEE + JSF + Pool Sistema de Login ................. 111
Desenvolvendo .................................................................... 112
Criando pool de conexo ................................................. 113
Criando o controlador funo ........................................... 117
Criando DAO LoginDAO.java ............................................ 118
Criando a classe ControllerLogin.java ................................ 118
Criando as pginas com JSF ............................................ 120

Sumrio

XXXIII

Concluso ..................................................................... 124


rabalho
Tra
balho do dia ................................................................... 124

Captulo 6
te Annota
tions ................................................... 127
Hiberna
Hibernate
Annotations
Hibernate Annotations ............................................................... 127
Annotations ou mapeamento .hbm.xml? .................................. 127
Como funciona? .................................................................. 128
O Java Annotations .............................................................. 128
Aplicao Java Hibernate Annotations .................................... 129
Iniciando o desenvolvimento ................................................. 129
Tra
balho do Dia ................................................................... 133
rabalho

Captulo 7
Banco de Dados MySQL ................................................ 135
Preparando o ambiente .............................................................. 135
Requisitos ..................................................................... 135
Instalando no Windows ................................................... 136
Instalando no Linux ........................................................ 136
Manipulando o Banco de Dados - MySQL Query Browser .......... 137
Criando um schema ............................................................. 139
Criando uma tabela .............................................................. 140
Criando uma FK .................................................................. 141

XXXIV

Guia Prtico Construindo Aplicaes JEE com Frameworks

Captulo 8
Modela
gem de Dados com WorkBench ........................... 145
Modelagem
Fazendo Engenharia Reversa MySQL & WorkBench ....................... 146
Sincronizando dados do WorkBench para MySQL .................... 148

Captulo 9
JavaServerFaces Framework JSF ................................ 151
Laboratrio .............................................................................. 151
Introduo ............................................................................... 151
Por que utilizar JavaServerFaces? ......................................... 158
A Estrutura bsica de um projeto com JSF ............................... 158
Primeira Aplicao com JSF ................................................. 159
Validao de Dados com JSF ................................................ 168
Validando campo para caracteres literais .......................... 168
Criando campos Requeridos .................................................. 171
Validando Dados ................................................................. 174
Aplicao JSF com BD ......................................................... 179
O que h de novo no JSF 2.0? ............................................... 185
Concluindo .................................................................... 186

Captulo 10
Segurana JEE Spring Security Framework ..................... 187
Implementando SpringSecurity com Banco de Dados ..................... 189
Fazendo logout ................................................................... 200

Sumrio

XXXV

SpringSecurity dando suporte a sistema legado ............................. 201


Soluo com BD ................................................................. 201
Solicionando Role_ do BD ................................................... 204
Concluindo .................................................................... 210

Captulo 11
Pool de Conexo ........................................................... 211
Como criar um pool de conexo? ................................................ 211
Por que usar o pool? ............................................................ 211
Criando o pool de conexo .................................................... 212

Captulo 12
balho Final JEE com Frameworks ............................... 215
Tra
rabalho
Tra
balho final do dia .................................................................. 215
rabalho
Sua funo ......................................................................... 216
Sobre a Aplicao ............................................................... 216
O Tra
balho ......................................................................... 217
rabalho

Apndice
Links de Auxlio ............................................................ 219
Problema com Tomca
omcatt 8080 ...................................................... 219
Eclipse com JEE Bug .............................................................. 220
Vdeo Instalando Jboss Tools Eclipse ............................................ 220
org.hibernate.Session Hibernate Soluo ................................... 220

XXXVI

Guia Prtico Construindo Aplicaes JEE com Frameworks

Communication Failure link Hibernate Soluo ........................... 221


Pool de Conexo (sem Hibernate) ................................................ 221
Open Session View Hibernate Soluo ...................................... 221
Colocando a aplicao em produo ........................................... 222

Concluso ................................................................... 225


Pra onde ir? ................................................................. 225
Bibliografia .................................................................. 227

Captulo 1
Introduo
No seremos cruis em querer jogar os assuntos prticos logo no
primeiro captulo. Apesar de este ser um guia rpido e prtico, teremos cuidado em como apresentar os assuntos para voc. Temos o
objetivo de facilitar o entendimento terico e prtico de como usar
Hibernate + JSF. Principalmente se voc vem do Servlet & JSP pode
estar se sentindo perdido com tantas siglas de frameworks existentes no mercado e sem saber para onde ir. Eu passei por isso e acredito
que muitos desenvolvedores iniciantes em JEE tambm venham a
sofrer desse mal.
Neste captulo voc vai saber o porqu do Hibernate no ambiente de
desenvolvimento JEE para frameworks, veremos um pouco de banco de
dados etc. somente para dar um refresh na sua mente. Mas no pule
este captulo, principalmente se voc estiver vendo o assunto pela primeira vez. Muitas informaes aqui expostas so requisitos para os
prximos tpicos e, por ser um guia rpido de estudos, procuramos no
ser repetitivos ou duplicar informaes.

O que Hibernate?
O Hibernate um framework que procura ter uma completa soluo para o problema de gerenciamento de dados persistentes em Java.
O relacionamento entre o Hibernate e o banco de dados algo bem
transparente e que no exige do desenvolvedor um hard-work
development. E assim este pode se concentrar mais na lgica de negcios. Em uma mudana no BD, o desenvolvedor no precisa sacrificar
o final de semana para implementar o recurso novo nvel de cdigo,

Guia Prtico Construindo Aplicaes JEE com Frameworks

apenas alterando algumas configuraes no Hibernate j ser possvel ter toda a aplicao atualizada. Sem sombra de dvidas, quem trabalha com JDBC diretamente e vem para o framework, com o passar do
tempo at esquece de como era difcil trabalhar com BD usando JDBC
no padro DAO.
No geral, usamos o Hibernate para fazer a integrao da nossa aplicao com o banco de dados da mesma forma que fazemos no JDBC. O
resultado final o mesmo, de ter dados atualizados no banco, mas a
forma como esses dados do banco podem ser manipulados dentro de
sua aplicao JEE que faz toda a diferena.

difcil?
Essa uma pergunta que j ouvi muitas vezes. Percebi que muitos
iniciantes criam bloqueios somente em ver o nome do framework, j que
so tantos que as empresas exigem. Mas, se olharmos por outro lado:
Se fosse difcil e complexo, por que de 10 empresas, 9 pedem? E ainda
por cima pedem no mnimo 2 ou3?. Isso quer dizer que no algo de
outro mundo, que uma pessoa normal possa aprender 1, 2, 3....
frameworks ao mesmo tempo e saber em qual situao usar o X e o Y.
Ento, ser difcil ou no, depende do tamanho do obstculo que voc
colocar na frente. Mas, requerido que o desenvolvedor j tenha experincia em fazer conexes Java com Banco de Dados, saber programar
em Java etc. Tudo depende de qual framework vai ser estudado, porm,
o que foi citado a base de tudo para desenvolver uma aplicao para o
mundo real. No precisa ser um expert em Java para aprender os
frameworks, mas saber fazer uma aplicao completa j um bom caminho percorrido. Agora, para quem nunca viu a tecnologia Java, no
adianta querer pular as etapas de aprendizado; por favor, retorne livraria e troque o nosso guia por outro livro recomendado para iniciantes
Java (h alguns do autor Edson Gonalves que valem a pena serem
verificados). Pois aqui no ensinaremos nada para quem estiver ainda
no bero do Java. O nosso livro para quem j saiu do bero e est
dando os primeiros passos com frameworks de modo prtico.

Captulo 1 - Introduo

Ambiente de Desenvolvimento
Para configurar o ambiente de desenvolvimento com Hibernate
muito simples, e dizem por ai que mais fcil do que tirar doce de
criana recm-nascida. Neste guia teremos o ambiente abaixo para
construo dos nossos projetos:

9
9
9
9
9
9

Eclipse Galileo ou mais recente;


MySQL 5.0.x;
WorkBench 5.x;
Frameworks: JSF 1.2 e Hibernate 3.x;
Jboss Tools 3.x;
TomCat 6.x.

Nota: Claro que teremos o Java j instalado na mquina.


Estamos trabalhando com a verso 1.5 da tecnologia Java,
voc pode usar esta verso ou outra superior.
Um detalhe importante que sempre tenho o hbito de trabalhar em
artigos, livros, postagens no meu blog etc. com verses no to recentes de uma tecnologia, isso para atender a um pblico maior e poder
expandir e compartilhar o conhecimento. Uma vez que funciona perfeitamente na verso anterior, teoricamente na atual deve funcionar.

Preparando o ambiente: Eclipse


Para preparar o ambiente com o Eclipse bem simples; basta ir ao site
do Eclipse (www.eclipse.org) e fazer o download da verso Galileo.
Aps terminar o download, descompacte o arquivo e execute o
eclipse.jar. Essa uma vantagem da IDE, no necessrio instalar,
somente executar e j a teremos em ao.

Guia Prtico Construindo Aplicaes JEE com Frameworks

Na primeira tela, o Eclipse deseja saber em qual workspace ficar


seus projetos. Voc pode usar o padro da prpria IDE ou criar uma.
Escolha onde seu projeto vai ficar armazenado e clique em OK. Aps
isso, o Eclipse tem uma tela de boas-vindas Welcome. Caso queria
obter maiores informaes da IDE, essa tela pode te ajudar. Feche-a para
irmos adiante.
Se escolher um workspace vazio, com certeza no teremos nenhum
projeto sendo visualizado na IDE.
Pronto. J temos a IDE apta para trabalhar.
Nota: O Java j deve estar devidamente instalado e configurado
na mquina. O Eclipse inteligente o suficiente e j deixa a IDE
configurada e pronta para trabalhar, uma vez que o Java JDK j
est na mquina. Se houver qualquer dvida consulte o captulo:
Links de Auxlio e veja como instalar o Java na sua mquina.

Configura
ndo o Ambiente: Hiberna
te
Configurando
Hibernate
Configurar o Hibernate no Eclipse muito simples. Basta ir ao site
www.hibernate.org e clicar na opo download. No link abaixo, que
estava ativo no momento que escrevi o guia, existem todas as verses do Hibernate.
O Hibernate informa quais arquivos .jar so requeridos. Mas, o
que so eles?
Poucos sabem (iniciantes), mas o Hibernate possui um arquivo .txt
localizado na pasta lib chamado de README.txt, que tem a funo de
informar ao programador quais arquivos so necessrios para o
framework trabalhar. E h uma pequena explicao do uso de cada .jar,
que fornecida pelo prprio fabricante.

Captulo 1 - Introduo

Abra o arquivo README.txt e veja quais so requeridos. Abaixo,


os listamos:
1. antlr-2.7.6.jar
2. asm.jar
3. asm.attrs.jar
4. c3p0-0.9.9.jar
5. cglib-2.1.3.jar
6. commons-collections-2.1.1.jar
7. commons-loggin-1.0.4.jar
8. dom4j-1.6.1.jar
9. hibernate3.jar
10. jta.jar
Nota: No objetivo explicar para que serve cada .jar acima,
mas caso tenha interesse, verifique na documentao do
framework uma vez que ele possui todas as informaes que
voc precisa sobre a tecnologia
Alguns programadores, principalmente os iniciantes usam o termo
instalar Hibernate. Bem, o framework no instalado e sim configurado na IDE Eclipse. No h nada para instalar, apenas para configurar,
como veremos na prtica mais frente.

Criando a biblioteca
Os passos aqui so vlidos para qualquer outro tipo de framework
(JSF, Struts etc.) ou algum arquivo .jar que deseja tornar uma biblioteca
para facilitar adio em outros projetos. Sendo assim, para o Hibernate,
vamos pedir a voc que somente crie a biblioteca. Se houver qualquer
dvida futuramente como fazer, basta retornar a este tpico e ver como
fizemos com o Hibernate e seguir os mesmos passos.

Guia Prtico Construindo Aplicaes JEE com Frameworks

1. Clique em Window =>Preferences


2. esquerda, digite user . Veja na imagem abaixo:

Figura 1: Criando uma biblioteca no Eclipse

3. Clique no boto new.


4. Agora precisamos dar um nome nossa biblioteca, ento digite:
Hibernate 3.2.1. considerado boa prtica de programao o
uso do nome do framework + verso. Assim, podemos ter vrios
projetos e cada um usando uma verso diferente do framework.
No se esquea de que voc ainda ser convidado para trabalhar
em sistemas legados, ento ser comum ter uma biblioteca configurada com uma verso mais antiga do framework.
5. Aps ter definido o nome, vamos adicionar os .jars biblioteca.
Para isso, clique em add jars.

Captulo 1 - Introduo

6. Agora voc precisa localizar os .jars required do Hibernate e


adicion-los biblioteca. Veja:

Figura 2: Biblioteca Hibernate

7. Feito isso, clique no boto OK.


Assim, criamos uma biblioteca para o Hibernate. Para adicion-la ao
projeto precisamos apenas clicar com o boto direito em cima do projeto
e escolher a opo:

Guia Prtico Construindo Aplicaes JEE com Frameworks

Figura 3: Adicionando Bibliotecas

1. Em seguida, escolha a opo user finish e clique em next. Na


prxima tela, escolha a biblioteca Hibernate para adicionar ao
projeto. Caso tivssemos mais de uma library, esta seria exibida
nesta pgina.
2. Clique em finish para concluir.
Assim, adicionamos o Hibernate ao projeto. Agora, podemos dizer
que o projeto j pode trabalhar com o framework, o que veremos mais
adiante.
Nota: H um pequeno detalhe que deve ser levado em conta nos
projetos JEE, principalmente ao adicionar arquivos .jars. O Eclipse no copia fisicamente os .jars para a pasta lib de forma automtica. E isso traz vrias excees que pode deix-lo estressado
tentando buscar erros em locais que no existem. Consulte nosso
captulo links de auxlio e veja como abordamos e resolvemos
esse problema, que da IDE Eclipse no copiar de forma automtica os .jars quando estes so adicionados ao projeto. Lembre-se de que isso somente acontece com projetos JEE.

Captulo 1 - Introduo

Configurando o JSF
Para configurar o JSF, utilizaremos o mesmo processo que foi feito
com o Hibernate. Ou seja, criaremos uma biblioteca (library) com os
.jars para JSF.
Para fazer o download do JSF v no seguinte endereo:
http://java.sun.com/javaee/javaserverfaces/download.html
Usaremos a verso 1.2 por ser compatvel com a tecnologia JavaEE 5.
Os arquivos .jars que precisamos so:

9 jsf-api.jar
9 jsf-impl.jar
Crie uma biblioteca user para este framework e chame de JSF 1.2.
Quando precisar ter JSF em seus projetos JEE, basta adicionar esta
biblioteca.

Instalando/Configurando Jboss tools


O Jboss tools um plugin que instalamos no Eclipse para dar suporte aos nossos projetos JEE. A ferramenta d suporte a vrios frameworks
como: Struts, JSF, JPA etc. No link a seguir h um vdeo explicando
como instalar e configurar a ferramenta no Eclipse:
www.camilolopes.com.br/videos/InstalandoJBossTools31/
Aps a instalao, ser solicitado um restart no Eclipse. Faa isso
para que as alteraes entrem em vigor.

10

Guia Prtico Construindo Aplicaes JEE com Frameworks

Banco de dados
Usaremos o MySQL como banco de dados para as nossas aplicaes. Alm de ser potencialmente famoso, possui muitas caractersticas
que no ficam a desejar com relao aos BD pagos.
Como ferramenta de modelagem teremos o WorkBench, da prpria
Sun, que trabalha muito bem com o MySQL. O WorkBench , na verdade, uma continuao do BD Designer que permaneceu no mercado como
ferramenta de modelagem por muito tempo.
Se voc no tem o MySQL e o WorkBench instalados, v no captulo
referente ao assunto e faa a instalao. Muito cuidado com a instalao do MySQL para no esquecer a senha de root.
O WorkBench vai nos ajudar na modelagem. Que tal aplicar engenharia reversa em seu Banco? Ou gerar um banco a partir de uma modelagem? isso que a ferramenta oferece. Veja abaixo uma modelagem
feita no WorkBench:

Figura 4: Modelagem de dados

obvio que a ferramenta precisa melhorar, e muito. At porque no


atende a projetos mais complexos, falta muita coisa e volta e meia aparecem bugs. Mas nada a impede de trabalhar em projetos pequenos. Por
ser free, tem seu custo x benefcio.

Captulo 1 - Introduo

11

No espere se tornar um expert em DB ou em modelagem de dados;


vamos apresentar aqui o assunto para voc no sair do guia somente
com codes em mente. Acreditamos que um bom desenvolvedor deva ser
especialista em sua rea de atuao, mas conhecedor das demais. Voc
no precisa ser um DBA para trabalhar com BD. Mas, tem que conhecer
o ABC de um BD.

Configurando BD MySQL no Eclipse


Para trabalharmos com o BD em nossos projetos JEE/Java precisamos ter o driver de conexo do BD. O driver MySQL que temos o
connector/J, que pode ser baixado no site do fabricante. No passa de
um arquivo .jar.
http://www.mysql.com/downloads/connector/j/
Adivinha o que voc precisa fazer com esse .jar... Isso mesmo, criar
uma biblioteca chamada MySQL 5.0 e, quando criar seus projetos com
conexo ao BD, adicionar a eles essa biblioteca.

Concluindo
No fique assustado com o que foi visto neste primeiro capitulo,
apenas fizemos um overview das coisas basicas e essenciais, no decorrer dos prximos captulos vamos mostrando de modo prtico como
desenvolver de fato.

Captulo 2
Hibernate
Esperamos que voc aprenda o bastante nesse captulo, pois tudo o
que voc precisa saber para dar os primeiros passos com Hibernate
Frameworks estaro aqui. Alguns tpicos so curtos, para no cans-lo.
Lembre-se de que voc adquiriu um guia rpido de estudo focado na
praticidade, e no um livro que vai esgotar tudo sobre uma tecnologia. Mas,
mostraremos o caminho da felicidade e cabe a voc ir em frente ou no.

Conhecendo a estrutura do Hibernate


Antes de colocarmos a mo na massa, precisamos conhecer a estrutura funcional do Hibernate. Abordaremos aqui apenas o necessrio e
que consideramos importante para que se, amanh, o seu colega na
esquina perguntar a voc para que serve um SessionFactory, voc saiba dar uma resposta rpida e inteligente.
Um dos primeiros pontos que queremos abordar que o Hibernate
usa JDBC para acesso ao Banco de Dados. Com Hibernate ainda necessrio passar algumas informaes manuais para conexo como se
faz via JDBC, porm, agora temos mais flexibilidade. Como bom
desenvolvedor, acreditamos que voc vai conseguir perceber a diferena no decorrer deste guia.
O que voc precisa saber:

9Para cada Banco de Dados precisamos informar o dialect para


execuo do Hibernate com o Banco de Dados (no se preocupe,
ainda vamos apresentar a voc uma tabela com alguns dialects);

14

Guia Prtico Construindo Aplicaes JEE com Frameworks

9As configuraes de conexo com o Banco de Dados podem


ficar em um arquivo Hibernate.properties ou em um arquivo XML
chamado hibernate.cfg.xml (mas voc pode alterar o nome, desde
que o especifique quando for criar SessionFactory), que deve
ficar no package src, se estiver usando Java Project, ou em
JavaSource, se for um Web Project;

9 O mapeamento normalmente criado com o nome do


bean.hbm.xml (Pessoa.hbm.xml). Podemos colocar o mapeamento/
persistncia onde acharmos mais conveniente. Porm, teremos
que informar isso no hibernate.cfg.xml quando formos mapear o
arquivo .hbm.xml. A maioria dos desenvolvedores pe o
mapeamento no mesmo package do bean.

9Para criar um objeto Session bem simples, veja o cdigo a


seguir:
1. SessionFactory sessionFactory = new Configuration.configure().
buildSessionFactory();
2. Session session = sessionFactory.openSession();

9Quem faz a busca pela configurao do Hibernate com o seu


BD a classe Configuration.
O arquivo default hibernate.cfg.xml, por isso que deixamos o argumento do mtodo configure() vazio. Mas, se for diferente, devemos informar configurate(meuhibernate.cfg.xml).

9Para persistncia dos dados usamos um objeto Session;


9SessionFactory: a fbrica de sesses, onde temos o ciclo de
vida. Com ela criamos um objeto Session para gerenciar a conexo
com o BD;

Captulo 2 - Hibernate

15

9Para cada BD diferente precisamos ter um SessionFactory;


9Obter a uma Session temos que usar um objeto de SessionFactory
( no exemplo acima temos sessionFactory) e chamar o mtodo
OpenSession();
9Ento, memorize a estrutura bsica de arquivos que voc vai
precisar antes de pensar em escrever uma linha de cdigo na
camada de negcio da sua aplicao. Veja:
1. Mapeamento da classe Bean;
2. Configurao do Hibernate com BD:

9No arquivo hibernate.cfg.xml temos algumas linhas de extrema


importncia que voc jamais pode esquecer. So elas:
- hibernate.connection.DataSource = passamos o JNDI name
- hibernate.jndi.url = Url do BD
- hibernate.connection.UserName = usurio do banco de dados
- hibernate.connection.password = que tal a senha do BD?

9Nunca esquea que devemos usar o Dialect SQL de acordo


com o banco de dados a ser conectado. Abaixo, temos um cdigo
de configurao para o MySQL 5 que usa InnoBD.
1 .<session-factory>
2 .<property name= hibernate.connection.driver_class>
org.gjt.mm.mysql.Driver</property>
3.
<property name=hibernate.connection.password>axe
</property>
4 .<property name=hibernate.connection.url>jdbc:mysql://
localhost/meubancodedados</property>
5.
<property name=hibernate.connection.username>root
</property>
6.
<property name=hibernate.dialect>org.hibernate.dialect.
MySQLInnoDBDialect</property>
7 .</session-factory>

16

Guia Prtico Construindo Aplicaes JEE com Frameworks

Nota: Voc pode estar se perguntando: Como saber qual o


dialect correto? Eu no uso MySQL; como saber se h suporte
para outro banco? Bem, no preciso fazer mgica, voc pode
ir ao site www.hibernate.org e verificar os BDs suportados com
seus respectivos dialects.
Para facilitar, veja uma tabela resumida dos dialects com os bancos
mais tradicionais:
DataBase

Dialect Class

DB2/390

DB2390Dialect

DB2/400

DB2400Dialect

DB2

DB2Dialect

Derby

DerbyDialect

Firebird

FirebirdDialect

FrontBase

FrontBaseDialect

HSQLDB

HSQLDialect

MySQL 5

MySQL5Dialect

MySQL(<5.x)

MySQLDialect

MySQL with InnoDB tables

MySQLInnoDBDialect

MySQL with MyISAM tables

MySQLMyISAMDialect

Oracle9i

Oracle9Dialect

Oracle9i/(DataDirect drivers)

DataDirectOracle9Dialect

PostgreSql

PostGreSQLDialect

SQL Server

SQLServerDialect

Na imagem a seguir, temos uma estrutura bsica usando um Java


Project com Hibernate. Observe que nossos mapping encontram-se na
raiz do projeto. No se desespere porque isso ser visto na prtica,
assim que comearmos a desenvolver.

Captulo 2 - Hibernate

17

Figura 5: Exemplo aplicao Java com Hibernate

Para executar o Hibernate 3, preciso colocar os arquivos .jars na


pasta lib para um projeto JEE e para Java Project, basta add library
ao projeto.
Nota: Sem os arquivos .jars no temos o Hibernate em ao,
por isso eles so requisitos. Sabemos que isso obvio, porm,
apenas reforamos, caso voc tenha esquecido de adicionlos ao projeto.
Isso o que voc precisa saber basicamente para montar uma estrutura Hibernate. Temos, at aqui, 50% do caminho percorrido. E antes de colocar a mo na massa, importante entender o que foi
explicado aqui.

Preparando ambiente Hibernate Eclipse


Veremos neste tpico como preparar o Eclipse para rodar o Hibernate.
Primeiramente, voc precisa ter feito o download da IDE na pgina
www.eclipse.org. Aqui usaremos a verso Galileo, conforme j dito no
capitulo anterior.

18

Guia Prtico Construindo Aplicaes JEE com Frameworks

importante ter feito o download do Hibernate conforme foi mencionado no captulo 1.


Nota: Usaremos a verso Hibernate verso 3.2.1.GA. O link
para ver todas as verses disponveis no momento em que o
livro foi escrito : http://sourceforge.net/projects/hibernate/files/hibernate3/
Muitos desenvolvedores no sabem quais os .jars necessrios e muitos apenas escolhem porque um amigo indicou. Porm, existe um motivo
para isso (bvio), basta irmos ao diretrio lib aps descompactarmos o
arquivo Hibernate.x.x.x. Na pasta lib, h um arquivo chamado
_README.txt, no qual podemos saber quais .jars precisaremos para ter a
tecnologia em ao nos projetos. Se houver alguma dvida sobre quais
so os arquivos, retorne ao captulo 1.

Adicionando Hibernate ao Projeto no Eclipse


Opo 1: Para saber o que adicionar a um projeto, preciso saber
o tipo de projeto que est criando. Se for um Java Project, precisamos apenas adicionar a ele os .jars
Opo 2: Se no for um Java Project (jsf project, web dynamic
project etc.), alm de adicionar os .jars, necessrio copiar os
arquivos fisicamente para a pasta lib do projeto. Isso porque ao
adicionar os .jars ao seu projeto Webo Eclipse no os copia
fisicamente.
Hibernate Java/JavaEE Project
1. Crie um Java Project;
2. Clique com o boto direito sobre o projeto e escolha properties;

Captulo 2 - Hibernate

19

3. Na prxima tela, adicione os .jars ao projeto,


4. Clique esquerda na opo Java Build Path e depois, na aba
libraries. Veja a imagem a seguir:

5. Clique em add external jars... e v at onde esto os arquivos


.jars do Hibernate;
6. Selecione os .jars do Hibernate e adicione-os ao projeto;
7. Uma vez adicionado, clique em OK.
Voc ter que fazer isso para cada projeto que criar no Eclipse. A no
ser que voc coloque os .jars no classpath, o que no recomendamos,
pois como far se estiver usando 5 ou 6 frameworks? H uma soluo
bem legal no Eclipse para evitar ficar importando os .jars a cada projeto.
Basta criar uma library e import-la para o projeto.