Você está na página 1de 13

Apostila de JPA, ZK e introduo a Banco de Dados Por Gabriel Leite

Introduo Caros alunos, esta apostila foi feita com o intuito de ajudar no aprendizado e facilitar a sua vida na hora das configuraes necessrias para a utilizao do JPA, ZK e de algum banco de dados da sua escolha, os quais tem sido frequentemente usados no projeto final de Computao 2. Portanto, faam bom proveito do material e sintam-se a vontade para entrar em contato comigo ou com os outros monitores para tirar qualquer dvida que venha a existir. Abraos, Gabriel Leite.

Ferramentas necessrias:

JDK 6 update 26; XAMPP 1.7.4; Eclipse Helios Java EE; ZK 5.0.6; ZK Studio; JARs para conexo com o banco de dados MySQL e habilitao do provider Hibernate (disponveis junto com o Projeto de Exemplo).

Instalao do JDK: J havendo alguma outra verso do JDK instalada, o procedimento de instalao se resumir a apenas ir dando continuidade apertando Next, caso no haja uma verso do JDK ter que ser feito o download do mesmo (sem o netbeans) no site da Oracle. 1

Instalao do XAMPP: O XAMPP um pacote de programas. Entre eles esto um servidor de banco de dados (MySQL) e um servidor java (Apache Tomcat), que sero os programas utilizados por ns. A instalao do XAMPP simples, o nico cuidado que deve ser tomado que ele deve ser instalado diretamente na raiz do disco C.

Figura 1

Terminada a instalao, entre na pasta do XAMPP e execute o arquivo xamppcontrol que o painel de controle do XAMPP. Na janela que abrir, clique em Start para iniciar o Apache e o MySQL.

Figura 2

Instalao do Eclipse Helios Java EE: Aps fazer o download do arquivo, descompacte a pasta no local que preferir. No meu caso, foi escolhido o caminho C:\Java\eclipse com workspace em C:\Java\eclipse\workspace. Para abrir o eclipse basta ir em C:\Java\eclipse\eclipse.exe.

Instalao do ZK (ZK Studio e ZK 5.0.6): Abra o eclipse, e v ao menu Help > Install New Software... Na janela que se abrir clique no boto Add... para abrir uma nova janela onde poder ser visto dois campos: Name: que dever ser preenchido com ZK Studio; Location: que dever ser preenchido com a url http://studioupdate.zkoss.org/studio/update/eclipse_3_6.

Figura 3

Figura 4

Feito isso, clique em OK e depois que o Eclipse encontrar o plugin do ZK Studio clique em Select All para em seguida clicar em Next > nas prximas etapas. Aceite os termos de licena e clique em Finish para dar incio instalao. Depois que a instalao estiver concluda, v ao menu Window > Preferences, escolha o item ZK e depois ZK Packages. Voc notar que a verso utilizada a 3.6.3. Para alterar, clique em Add File / Directory... depois em File Import e ento selecione o arquivo zip que foi baixado no link ZK 5.0.6. Clique no boto Finish e marque a opo da verso mais nova ento clique em OK. Falta apenas configurar o servidor onde as aplicaes iro rodar. Como j temos o tomcat que foi instalado junto com o xampp, o trabalho fica mais fcil. Basta apenas ir ao menu File > New > Other..., procurar pela opo Server e clicar em Next >.

Figura 5

Na prxima janela, escolha a opo Tomcat v7.0 Server e clique em Next >.

Figura 6

Deixe as configuraes da prxima janela como abaixo e clique em Finish.

Figura 7

Com isso, o eclipse j estar pronto para trabalhar com projetos ZK.

Introduo a Banco de Dados: Sendo bem simplista, um banco de dados no nada mais nada menos que um conjunto de tabelas onde sero guardados algum tipo de informao. Vamos supor que nossa realidade uma escola, sendo assim o nosso banco de dados ter o nome de nossa suposta escola. Uma tabela possvel seria a tabela aluno e nome, sobrenome, idade e matrcula seriam os dados de cada aluno da nossa escola, sendo assim nossa tabela ficaria assim: Tabela Aluno Nome Sobrenome Idade matrcula

Sendo assim, o maior problema da montagem do banco de dados a modelagem do problema a ser resolvido e as espicificaes dos dados necessrios em cada tabela. Utilizando o MySQL com PHPMyAdmin para montagem de Bancos de Dados: O MySQL um dos servidores de banco de dados mais utilizados do mundo e um dos programas que so instalados do pacote XAMPP e para facilitar tudo, o XAMPP tambm instala o PHPMyAdmin que uma interface para ajudar o usurio na utilizao do MySQL. Para acessar o PHPMyAdmin, aps iniciar o XAMPP como descrito anteriormente, basta abrir seu navegador acessar http://localhost/phpmyadmin.

Figura 8

Para criar um novo banco de dados, basta preencher os campos destacados pelo retngulo vermelho, com o nome do novo banco e o tipo (pode deixar como Collation), aps isso clique no boto Criar e o seu banco ser criado, e ser adicionado um link para ele na lista de bancos, esquerda, e para acessar as tabelas do banco basta clicar sobre o nome dele. Como exemplo irei criar o banco escola, do tpico anterior.

Figura 9

O prximo passo a criao das tabelas do nosso banco e, mais uma vez seguindo o nosso exemplo anterior, irei criar a tabela Aluno com os campos: 1Id, Nome, Sobrenome, Idade e Matrcula. Para isso, basta clicar no link do bando de dados desejado (no nosso caso ser o banco de dados escola), escolher o nome da tabela e a quantidade de campos que a nossa tabela ir ter e apertar o boto Executar.

Figura 10

Agora deveremos determinar que campos iremos querer na nossa tabela, siga a imagem abaixo e clique em salvar.

O campo Id um campo que criado apenas para indicar o ndice do registro.

Figura 11

Como pode ser visto, em campo deve-se colocar o nome dos campos, em tipo coloca-se o tipo do campo (int, 2varchar, float, ...) e em 3tamanho defini-se o tamanho do campo. Preste especial ateno ao atributo A_I (auto increment) marcado no campo id, ele determina que o campo id ser um contador, ou seja, no primeiro registro gravado na tabela o valor de id ser 1, no segundo ser 2 e assim por diante. Com isto nosso banco de dados j est pronto para ser usado.

Montagem de uma aplicao simples com ZK integrado ao banco de dados com uso de JPA (considerando-se o servidor j configurado previamente), Anlise do projeto exemplo: Para criar um novo projeto ZK basta ir ao menu File > New > Project..., escolher a opo ZK Project e clicar no boto Next >. Na janela subsequente defina o nome do projeto, em Dynamic Web Module Version escolha 2.5, clique em Finish e seu projeto ZK ser criado. Dentro do projeto que foi criado pelo Eclipse pode-se observar um subdiretrio chamado WebContent e dentro dele o arquivo index.zul, nesse arquivo que montamos a estrutura (como ela ser visualizada) da nossa aplicao. Quando abrimos o arquivo index.zul temos o nosso primeiro contato com a linguagem ZUML e como podemos perceber logo de cara o ZK , fazendo uma definio bem simplista, praticamente uma linguagem de marcao e o que nos permite dar ao aos componentes ZK a ligao ao cdigo em java, seja por meio
2

Varchar = cadeia de caracteres.

Como pode ser visto, no preciso determinar o tamanho de todos os campos. Mas campos como os de tipo varchar so obrigados a terem os seus tamanhos determinados.

10

de inseres de cdigo dentro do prprio contexto do ZK ou por meio de ligao com uma classe controladora dos objetos como veremos mais adiante analisando o projeto feito por mim e disponibilizado junto com esta apostila (baixe o projeto aqui). Os arquivos java devem ficam dentro de pacotes no diretrio Java Resources: src. Terminando a configurao do novo projeto, falta apenas adicionar as bibliotecas (JARs) que vamos precisar ao nosso projeto, para facilitar nessa parte pode-se copiar a pasta lib do projeto de exemplo e colar dentro do diretrio /WebContent/WEB-INF e substituindo a pasta lib j existente, e adicionar a unidade de persistncia, e para simplificar mais uma vez copie a pasta META-INF do projeto de exemplo que se encontra na pasta Java Resources:src para o mesmo diretrio do seu projeto. A nica coisa que deve ser observada que, caso pretenda-se usar um outro banco de dados deve ser adicionado na mesma pasta lib o JAR de conexo do banco desejado e alterar a unidade de persistncia, configurando-a para a conexo com o novo banco de dados. Tendo cumprido esta etapa, o projeto j estar configurado para o incio do desenvolvimento.

O nosso projeto de exemplo bem simples, ele simula o cadastro de alunos no banco de dados escola criado anteriormente e tambm possibilita a visualizao dos alunos cadastrados. Para isso, foi criado dois arquivos ZUL (index.zul e veralunos.zul) e trs classe java (Controladora.java, ConnectionFactory.java e Aluno.java), abaixo comentarei o papel de cada um desses arquivos dentro do projeto.

index.zul e ver-aluno.zul: So os arquivos que determinam como a nossa aplicao exibida. O mais importante a ser observado como se d a ligao entre os arquivos ZUL e os arquivos Java que controlam os componentes contidos nos arquivos ZUL. Essa ligao acontece da seguinte maneira: No ZK h componentes chamados de Containers, como por exemplo o window, o div e outros. Uma das propriedades de alguns desses componentes apply que determina o arquivo Java que ser o controlador desse container e de todos os outros componentes contidos dentro dele, os quais sero controlados por meio da propriedade id que tem que ser nica nos arquivos ZUL. Sendo assim, tendo uma classe Controladora.java dentro do pacote controle do meu projeto, se quisermos pegar o valor da caixa de texto nome quando o boto adicionarAluno for clicado, basta fazer: Exemplo de parte do arquivo ZUL 11

<window apply="controle.Controladora"> *Nome: <textbox id="nome" /> <button id="adicionarAluno" label="Adicionar" /> </window>

Exemplo de parte do arquivo Controladora.java


/* as variveis so declaradas de acordo com o id que foi dado * no arquivo ZUL */ private Textbox nome; private Button adicionarAluno; /* mtodo ouvinte para quando o boto adicionarAluno for clicado * esses mtodos seguem o padro: evento$idDoComponente * onde evento pode ser: onClick, onBlur, onFocus, etc. */ public void onClick$adicionarAluno (Event event) { String nome; nome = this.nome.getText(); }

Controladora.java: Nesta classe so declaradas as variveis dos componentes que iremos controlar e so implementados os mtodos de controle de eventos de tais componentes, para isso basta seguir o exemplo anterior. ConnectionFactory.java e Aluno.java: Estas classes so as responsveis pela ligao da aplicao com o banco de dados (JPA). A classe ConnectionFactory responsvel por facilitar as requisies feitas ao banco de dados, como por exemplo: abertura de uma nova conexo, insero de dados, pesquisa dentro do banco. A classe Aluno do pacote modelo uma das mais importntes do projeto, ela que representa a nossa tabela do banco de dados. A diferena desta classe para as outras que por ela representar uma tabela do banco de dados ela receber anotaes do JPA que facilitaro na ligao com o banco. Estas anotaes servem, por exemplo, pra indicar que a classe uma entidade (=tabela) do banco de dados:
@Entity @Table(name = "aluno")

ou para indicar que algum atributo de instncia a representao de uma coluna da tabela: 12

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Basic(optional = false) @Column(name = "nome") private String nome;

Nesta classe se encontram tambm as teis namedQueries, que so consultas em SQL (linguagem do banco de dados) criadas para que no seja necessrio passar cdigos em SQL para os mtodos da classe ConnectionFactory, e sim apenas uma string que indicar a consulta desejada, por exemplo:
@NamedQueries({ @NamedQuery(name = "Aluno.findAll", query = "SELECT a FROM Aluno a"), @NamedQuery(name = "Aluno.findById", query = "SELECT a FROM Aluno a WHERE a.id = :id"), @NamedQuery(name = "Aluno.findByNome", query = "SELECT a FROM Aluno a WHERE a.nome = :nome"), @NamedQuery(name = "Aluno.findBySobrenome", query = "SELECT a FROM Aluno a WHERE a.sobrenome = :sobrenome"), @NamedQuery(name = "Aluno.findByIdade", query = "SELECT a FROM Aluno a WHERE a.idade = :idade"), @NamedQuery(name = "Aluno.findByMatricula", query = "SELECT a FROM Aluno a WHERE a.matricula = :matricula")})

com estas namedQueries criadas, para pesquisar todos os alunos da tabela basta passar o parmetro Aluno.findAll para o mtodo getListaResultado() da classe ConnectionFactory.

Consideraes finais: Terminamos assim, com este exemplo, a apostila. Aproveito para reforar que em caso de qualquer dvida que ocorra que procurem os monitores para que possam tir-las e assim facilitar o trabalho de vocs.

13