O documento apresenta uma introdução sobre JPA, ZK e bancos de dados, descrevendo as ferramentas necessárias e os passos para instalação e configuração do JDK, XAMPP, Eclipse Helios Java EE, ZK Studio e conexão com banco de dados. Também fornece uma breve introdução sobre bancos de dados e como utilizar o PHPMyAdmin para criação de tabelas.
O documento apresenta uma introdução sobre JPA, ZK e bancos de dados, descrevendo as ferramentas necessárias e os passos para instalação e configuração do JDK, XAMPP, Eclipse Helios Java EE, ZK Studio e conexão com banco de dados. Também fornece uma breve introdução sobre bancos de dados e como utilizar o PHPMyAdmin para criação de tabelas.
O documento apresenta uma introdução sobre JPA, ZK e bancos de dados, descrevendo as ferramentas necessárias e os passos para instalação e configuração do JDK, XAMPP, Eclipse Helios Java EE, ZK Studio e conexão com banco de dados. Também fornece uma breve introdução sobre bancos de dados e como utilizar o PHPMyAdmin para criação de tabelas.
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(