Comece abrindo o projeto ListaTafefas que criamos na parte 1. Na aba Services, do lado esquerdo, clique com o botão direito em JavaDB e escolha CreateDatabase. Chame o banco de dados de Tafefas, usuário e senha javabahia e escolha a localização do BD no seu computador. Logo abaixo, aparecerá uma linha jdbc:derby://localhost:1527/Tarefas. Clique com o botão direito e escolha Connect. Pronto! O banco está criado, porém ainda não temos nenhuma tabela.
Clique com o botão direito no folder Tables e escolha Execute Command. Na área de edição, será aberta uma aba que permite a execução de comandos SQL. Copie e cole o comando a seguir e mande executar (Ctrl+Shift+E):
create table TAREFA(Será criada uma tabela com 4 campos, tendo o ID como chave primária, gerada automaticamente. Também serão adicionados 4 registros, para utilizarmos na hora de listá-los (observe que as datas estão no formato MM/DD/AAAA). Agora vamos aprender a usar o Java Persistence API, que provê um padrão para mapeamento objeto relacional. Na árvore do projeto, clique com o botão direito em Source Packages e escolha New -> Entity Classes from Database. Abra a combo em Data Source e escolha New. Informe jdbc/tarefas no campo JDNI Name e jdbc:derby://localhost:1527/Tarefas em Data Base Connection. Após clicar em OK a tabela TAREFA aparecerá disponível na lista. Selecione-a e clique em Add e em seguida Next.
ID INTEGER GENERATED ALWAYS AS IDENTITY not null primary key,
NOME VARCHAR(50),
PRIORIDADE INTEGER,
DATA_TAREFA DATE);
INSERT INTO Tarefa(NOME,PRIORIDADE,DATA_TAREFA) VALUES ('Comprar passagens', 1, '07/10/2008');
INSERT INTO Tarefa(NOME,PRIORIDADE,DATA_TAREFA) VALUES ('Reservar hotel', 2, '07/15/2008');
INSERT INTO Tarefa(NOME,PRIORIDADE,DATA_TAREFA) VALUES ('Alugar carro', 3, '07/25/2008');
INSERT INTO Tarefa(NOME,PRIORIDADE,DATA_TAREFA) VALUES ('Arrumar bagagens', 3, '07/30/2008');
INSERT INTO Tarefa(NOME,PRIORIDADE,DATA_TAREFA) VALUES ('Tirar férias', 1, '09/01/2008')
Criando Entity Classes a partir de um banco de dados
Na tela seguinte, informe javabahia.beans no campo Package e clique no botão Create Persistente Unit. Aceite os valores default (será usado o TopLink como provider, mas você poderia escolher outro de sua preferência, como Hibernate ou OpenJPA) e clique em Create para gerar a ListaTarefasPU. De volta a tela anterior, clique em Finish e será criada a classe Tarefa, já com todas as anotações no padrão JPA, e o arquivo persistence.xml com as definições da Persistence Unit. Abra Tarefa.java e adicione @GeneratedValue(strategy=GenerationType.IDENTITY) logo abaixo de @Id, o que provocará a geração automática da chave primária da tabela. Adicione também o método public String getDataTarefaAsString() { return new SimpleDateFormat("dd/MM/yyyy").format(dataTarefa); }, que será utilizado mais à frente para obter a data da tarefa no formato dia/mês/ano. Execute um Fix Imports (Ctrl+Shift+I) para não dar erro de compilação. Na pasta Configuration Files, dê um duplo clique em persistence.xml e desmarque a opção Include All Entity Classes in "ListaTarefas" Module. Clique no botão Add Class e inclua javabahia.beans.Tarefa.
Agora já podemos editar o arquivo index.zul para acessar as informações no nosso banco de dados. Altere-o para o conteúdo listado a seguir. Observe que dentro da tag zscript escrevemos puramente código Java. Usamos a classe JpaUtil para obter um EntityManager referenciando pelo nome a Persistence Unit criada anteriormente. Com a tag listitem o atributo forEach realiza as iterações na lista de tarefas já obtida. Em listcell usamos Expression Language (EL) para obter o conteúdo de cada campo. Viu como é fácil?
Agora já podemos editar o arquivo index.zul para acessar as informações no nosso banco de dados. Altere-o para o conteúdo listado a seguir. Observe que dentro da tag zscript escrevemos puramente código Java. Usamos a classe JpaUtil para obter um EntityManager referenciando pelo nome a Persistence Unit criada anteriormente. Com a tag listitem o atributo forEach realiza as iterações na lista de tarefas já obtida. Em listcell usamos Expression Language (EL) para obter o conteúdo de cada campo. Viu como é fácil?
<?xml version="1.0" encoding="UTF-8"?>Execute a aplicação o NetBeans se encarregará de compilar tudo, efetivar o deploy no Glassfish e abrir o navegador padrão na página da aplicação. Você verá tabela listando todos os itens previamente cadastrados no banco de dados. No próximo post iremos melhorar este exemplo, criando uma aplicação totalmente funcional. Novamente lembramos que esse é um exemplo adaptado de um tutorial da página oficial do ZK, então você já tem uma boa referência para incrementar já sua Lista de Tarefas.
<window title="Lista de Tarefas" width="800px" border="normal">
<zscript>
import javabahia.beans.Tarefa;
import java.util.ArrayList;
import javax.persistence.EntityManager;
import org.zkoss.zkplus.jpa.JpaUtil;
private static EntityManager em = JpaUtil.getEntityManager("ListaTarefasPU");
List listaTarefas = em.createQuery("SELECT t FROM Tarefa t").getResultList();
</zscript>
<listbox id="box" multiple="true" rows="4">
<listhead>
<listheader label="Tarefa" />
<listheader label="Prioridade" width="90px" />
<listheader label="Data" width="90px" />
</listhead>
<listitem forEach="${listaTarefas}" value="${each}">
<listcell label="${each.nome}"/>
<listcell label="${each.prioridade}"/>
<listcell label="${each.dataTarefaAsString}"/>
</listitem>
</listbox>
</window>
0 comentários:
Postar um comentário