Você está na página 1de 12

Apostila de JPA, ZK e introduo a Banco de Dados

Por Gabriel Leite


Introduo
Caros alunos, esta apostila foi feita com o intuito de audar no aprendi!ado e facilitar a sua "ida
na #ora das confi$ura%es necess&rias para a utili!ao do JPA, ZK e de al$um banco de
dados da sua escol#a, os 'uais tem sido fre'uentemente usados no proeto final de
Computao ()
Portanto, faam bom pro"eito do material e sintam*se a "ontade para entrar em contato comi$o
ou com os outros monitores para tirar 'ual'uer d+"ida 'ue "en#a a e,istir)
Abraos,
Gabriel Leite)
-erramentas necess&rias.
JDK / update (/ 0
1A2PP 3)4)5 0
6clipse 7elios Ja"a 66 0
ZK 8)9)/ 0
ZK :tudio0
JA;s para cone,o com o banco de dados 2<:=L e #abilitao do pro"ider 7ibernate
>dispon?"eis unto com o Proeto de 6,emplo@)
Instalao do JDK:
J& #a"endo al$uma outra "erso do JDK instalada, o procedimento de instalao se resumir& a
apenas ir dando continuidade apertando Ae,t, caso no #aa uma "erso do JDK ter& 'ue ser
feito o doBnload do mesmo >sem o netbeans@ no site da Cracle)
Instalao do XAMPP:
3
C 1A2PP D um pacote de pro$ramas) 6ntre eles esto um ser"idor de banco de dados
>2<:=L@ e um ser"idor a"a >Apac#e Eomcat@, 'ue sero os pro$ramas utili!ados por nFs) A
instalao do 1A2PP D simples, o +nico cuidado 'ue de"e ser tomado D 'ue ele de"e ser
instalado diretamente na rai! do disco C)
Figura 1
Eerminada a instalao, entre na pasta do 1A2PP e e,ecute o ar'ui"o ,ampp*control 'ue D o
painel de controle do 1A2PP) Aa anela 'ue abrir, cli'ue em :tart para iniciar o Apac#e e o
2<:=L)
(
Figura 2
Instalao do Eclipse Helios Jaa EE:
ApFs fa!er o doBnload do ar'ui"o, descompacte a pasta no local 'ue preferir) Ao meu caso, foi
escol#ido o camin#o C.GJa"aGeclipse com BorHspace em C.GJa"aGeclipseGBorHspace) Para abrir
o eclipse basta ir em C.GJa"aGeclipseGeclipse)e,e)
Instalao do !K "!K #tudio e !K $%&%'(:
Abra o eclipse, e "& ao menu 7elp I Install AeB :oftBare))) Aa anela 'ue se abrir cli'ue no
boto Add))) para abrir uma no"a anela onde poder& ser "isto dois campos.
Aame. 'ue de"er& ser preenc#ido com ZK :tudio0
Location. 'ue de"er& ser preenc#ido com a url
#ttp.JJstudioupdate)!Hoss)or$JstudioJupdateJeclipseKLK/)
L
Figura )
5
Figura *
-eito isso, cli'ue em CK e depois 'ue o 6clipse encontrar o plu$in do ZK :tudio cli'ue em
:elect All para em se$uida clicar em Ae,t I nas prF,imas etapas) Aceite os termos de licena e
cli'ue em -inis# para dar in?cio M instalao)
Depois 'ue a instalao esti"er conclu?da, "& ao menu NindoB I Preferences, escol#a o item
ZK e depois ZK PacHa$es) OocP notar& 'ue a "erso utili!ada D a L)/)L) Para alterar, cli'ue em
Add -ile J Director<))) depois em -ile Import e ento selecione o ar'ui"o !ip 'ue foi bai,ado no
linH ZK 8)9)/) Cli'ue no boto -inis# e mar'ue a opo da "erso mais no"a ento cli'ue em
CK)
-alta apenas confi$urar o ser"idor onde as aplica%es iro rodar) Como & temos o tomcat 'ue
foi instalado unto com o ,ampp, o trabal#o fica mais f&cil) Basta apenas ir ao menu -ile I AeB
I Ct#er))), procurar pela opo :er"er e clicar em Ae,t I)
8
Figura $
Aa prF,ima anela, escol#a a opo Eomcat "4)9 :er"er e cli'ue em Ae,t I)
Figura '
/
Dei,e as confi$ura%es da prF,ima anela como abai,o e cli'ue em -inis#)
Figura +
Com isso, o eclipse & estar& pronto para trabal#ar com proetos ZK)
Introduo a ,anco de Dados:
:endo bem simplista, um banco de dados no D nada mais nada menos 'ue um conunto de
tabelas onde sero $uardados al$um tipo de informao) Oamos supor 'ue nossa realidade D
uma escola, sendo assim o nosso banco de dados ter& o nome de nossa suposta escola) Qma
tabela poss?"el seria a tabela aluno e nome, sobrenome, idade e matr?cula seriam os dados de
cada aluno da nossa escola, sendo assim nossa tabela ficaria assim.
Eabela Aluno
Aome :obrenome Idade matr?cula
:endo assim, o maior problema da monta$em do banco de dados D a modela$em do problema
a ser resol"ido e as espicifica%es dos dados necess&rios em cada tabela)
-tili.ando o M/#01 co2 PHPM/Ad2in para 2ontage2 de ,ancos de Dados:
4
C 2<:=L D um dos ser"idores de banco de dados mais utili!ados do mundo e D um dos
pro$ramas 'ue so instalados do pacote 1A2PP e para facilitar tudo, o 1A2PP tambDm
instala o P7P2<Admin 'ue D uma interface para audar o usu&rio na utili!ao do 2<:=L)
Para acessar o P7P2<Admin, apFs iniciar o 1A2PP como descrito anteriormente, basta abrir
seu na"e$ador acessar #ttp.JJlocal#ostJp#pm<admin)
Figura 3
Para criar um no"o banco de dados, basta preenc#er os campos destacados pelo retRn$ulo
"ermel#o, com o nome do no"o banco e o tipo >pode dei,ar como Collation@, apFs isso cli'ue
no boto Criar e o seu banco ser& criado, e ser& adicionado um linH para ele na lista de bancos,
M es'uerda, e para acessar as tabelas do banco basta clicar sobre o nome dele) Como
e,emplo irei criar o banco escola, do tFpico anterior)
Figura 4
C prF,imo passo D a criao das tabelas do nosso banco e, mais uma "e! se$uindo o nosso
e,emplo anterior, irei criar a tabela Aluno com os campos.
3
Id, Aome, :obrenome, Idade e
2atr?cula) Para isso, basta clicar no linH do bando de dados deseado >no nosso caso ser& o
3
C campo Id D um campo 'ue D criado apenas para indicar o ?ndice do re$istro)
S
banco de dados escola@, escol#er o nome da tabela e a 'uantidade de campos 'ue a nossa
tabela ir& ter e apertar o boto 6,ecutar)
Figura 1&
A$ora de"eremos determinar 'ue campos iremos 'uerer na nossa tabela, si$a a ima$em
abai,o e cli'ue em sal"ar)
Figura 11
Como pode ser "isto, em campo de"e*se colocar o nome dos campos, em tipo coloca*se o tipo
do campo >int,
(
"arc#ar, float, )))@ e em
L
taman#o defini*se o taman#o do campo) Preste
especial ateno ao atributo AKI >auto increment@ marcado no campo id, ele determina 'ue o
campo id ser& um contador, ou sea, no primeiro re$istro $ra"ado na tabela o "alor de id ser& 3,
no se$undo ser& ( e assim por diante) Com isto nosso banco de dados & est& pronto para ser
usado)
(
Oarc#ar T cadeia de caracteres)
L
Como pode ser "isto, no D preciso determinar o taman#o de todos os campos) 2as campos como os
de tipo "arc#ar so obri$ados a terem os seus taman#os determinados)
U
Montage2 de u2a aplicao si2ples co2 !K integrado ao 5anco de dados co2 uso de
JPA "considerando6se o seridor 78 con9igurado preia2ente(: An8lise do pro7eto
e;e2plo:
Para criar um no"o proeto ZK basta ir ao menu -ile I AeB I Proect))), escol#er a opo ZK
Proect e clicar no boto Ae,t I) Aa anela subse'uente defina o nome do proeto, em D<namic
Neb 2odule Oersion escol#a ()8, cli'ue em -inis# e seu proeto ZK ser& criado)
Dentro do proeto 'ue foi criado pelo 6clipse pode*se obser"ar um subdiretFrio c#amado
NebContent e dentro dele o ar'ui"o inde,)!ul, D nesse ar'ui"o 'ue montamos a estrutura
>como ela ser& "isuali!ada@ da nossa aplicao)
=uando abrimos o ar'ui"o inde,)!ul temos o nosso primeiro contato com a lin$ua$em ZQ2L e
como podemos perceber lo$o de cara o ZK D, fa!endo uma definio bem simplista,
praticamente uma Vlin$ua$em de marcaoW e o 'ue nos permite dar ao aos componentes
ZK D a li$ao ao cFdi$o em a"a, sea por meio de inser%es de cFdi$o dentro do prFprio
conte,to do ZK ou por meio de li$ao com uma classe controladora dos obetos como
"eremos mais adiante analisando o proeto feito por mim e disponibili!ado unto com esta
apostila >bai,e o proeto a'ui@) Cs ar'ui"os a"a de"em ficam dentro de pacotes no diretFrio
Ja"a ;esources. src) Eerminando a confi$urao do no"o proeto, falta apenas adicionar as
bibliotecas >JA;s@ 'ue "amos precisar ao nosso proeto, para facilitar nessa parte pode*se
copiar a pasta lib do proeto de e,emplo e colar dentro do diretFrio JNebContentJN6B*IA- e
substituindo a pasta lib & e,istente, e adicionar a unidade de persistPncia, e para simplificar
mais uma "e! copie a pasta 26EA*IA- do proeto de e,emplo 'ue se encontra na pasta Ja"a
;esources.src para o mesmo diretFrio do seu proeto) A +nica coisa 'ue de"e ser obser"ada D
'ue, caso pretenda*se usar um outro banco de dados de"e ser adicionado na mesma pasta lib
o JA; de cone,o do banco deseado e alterar a unidade de persistPncia, confi$urando*a para
a cone,o com o no"o banco de dados) Eendo cumprido esta etapa, o proeto & estar&
confi$urado para o in?cio do desen"ol"imento)
C nosso proeto de e,emplo D bem simples, ele simula o cadastro de alunos no banco de
dados escola criado anteriormente e tambDm possibilita a "isuali!ao dos alunos cadastrados)
Para isso, foi criado dois ar'ui"os ZQL >inde,)!ul e "er*alunos)!ul@ e trPs classe a"a
>Controladora)a"a, Connection-actor<)a"a e Aluno)a"a@, abai,o comentarei o papel de cada
um desses ar'ui"os dentro do proeto)
inde;%.ul e er6aluno%.ul:
:o os ar'ui"os 'ue determinam como a nossa aplicao D e,ibida) C mais importante a ser
obser"ado D como se d& a li$ao entre os ar'ui"os ZQL e os ar'ui"os Ja"a 'ue controlam os
componentes contidos nos ar'ui"os ZQL) 6ssa li$ao acontece da se$uinte maneira.
39
Ao ZK #& componentes c#amados de Containers, como por e,emplo o BindoB, o di" e outros)
Qma das propriedades de al$uns desses componentes D appl< 'ue determina o ar'ui"o Ja"a
'ue ser& o controlador desse container e de todos os outros componentes contidos dentro dele,
os 'uais sero controlados por meio da propriedade id 'ue tem 'ue ser +nica nos ar'ui"os
ZQL)
:endo assim, tendo uma classe Controladora)a"a dentro do pacote controle do meu proeto, se
'uisermos pe$ar o "alor da cai,a de te,to nome 'uando o boto adicionarAluno for clicado,
basta fa!er.
6,emplo de parte do ar'ui"o ZQL
<window apply="controle.Controladora">
*Nome:
<textbox id="nome" />
<button id="adicionarAluno" label="Adicionar" />
</window>
6,emplo de parte do ar'ui"o Controladora)a"a
/* as variveis so declaradas de acordo com o id que foi dado
* no arquivo !"
*/
private #extbox nome$
private %utton adicionar&luno$
/* m'todo ouvinte para quando o boto adicionar&luno for clicado
* esses m'todos se(uem o padro: evento)id*o+omponente
* onde evento pode ser: on+lic,- on%lur- on.ocus- etc/
*/
public void on+lic,)adicionar&luno 01vent event2 3
4trin( nome$
nome = this/nome/(et#ext02$
5
<ontroladora%7aa:
Aesta classe so declaradas as "ari&"eis dos componentes 'ue iremos controlar e so
implementados os mDtodos de controle de e"entos de tais componentes, para isso basta se$uir
o e,emplo anterior)
<onnectionFactor/%7aa e Aluno%7aa:
6stas classes so as respons&"eis pela li$ao da aplicao com o banco de dados >JPA@) A
classe Connection-actor< D respons&"el por facilitar as re'uisi%es feitas ao banco de dados,
como por e,emplo. abertura de uma no"a cone,o, insero de dados, pes'uisa dentro do
banco)
33
A classe Aluno do pacote modelo D uma das mais importRntes do proeto, D ela 'ue representa
a nossa tabela do banco de dados) A diferena desta classe para as outras D 'ue por ela
representar uma tabela do banco de dados ela receber& anota%es do JPA 'ue facilitaro na
li$ao com o banco)
6stas anota%es ser"em, por e,emplo, pra indicar 'ue a classe D uma entidade >Ttabela@ do
banco de dados.
61ntity
6#able0name = 7aluno72
ou para indicar 'ue al$um atributo de instRncia D a representao de uma coluna da tabela.
68d
69enerated:alue0strate(y = 9eneration#ype/IDENTITY2
6%asic0optional = false2
6+olumn0name = 7id72
private 8nte(er id$
6%asic0optional = false2
6+olumn0name = 7nome72
private 4trin( nome$
Aesta classe se encontram tambDm as +teis named=ueries, 'ue so consultas em :=L
>lin$ua$em do banco de dados@ criadas para 'ue no sea necess&rio passar cFdi$os em :=L
para os mDtodos da classe Connection-actor<, e sim apenas uma strin$ 'ue indicar& a
consulta deseada, por e,emplo.
6Named;ueries03
6Named;uery0name = 7&luno/find&ll7- query = 741"1+# a .<=> &luno a72-
6Named;uery0name = 7&luno/find%y8d7-
query = 741"1+# a .<=> &luno a ?@1<1 a/id = :id72-
6Named;uery0name = 7&luno/find%yNome7-
query = 741"1+# a .<=> &luno a ?@1<1 a/nome = :nome72-
6Named;uery0name = 7&luno/find%y4obrenome7-
query = 741"1+# a .<=> &luno a ?@1<1 a/sobrenome = :sobrenome72-
6Named;uery0name = 7&luno/find%y8dade7-
query = 741"1+# a .<=> &luno a ?@1<1 a/idade = :idade72-
6Named;uery0name = 7&luno/find%y>atricula7-
query = 741"1+# a .<=> &luno a ?@1<1 a/matricula = :matricula7252
com estas named=ueries criadas, para pes'uisar todos os alunos da tabela basta passar o
parRmetro VAluno)findAllW para o mDtodo $etLista;esultado>@ da classe Connection-actor<)
<onsidera=es 9inais:
Eerminamos assim, com este e,emplo, a apostila) Apro"eito para reforar 'ue em caso de
'ual'uer d+"ida 'ue ocorra 'ue procurem os monitores para 'ue possam tir&*las e assim
facilitar o trabal#o de "ocPs)
3(

Você também pode gostar