ff00">Esse artigo faz parte da revista Java Magazine edição 53. Clique aqui para ler todos os artigos desta edição.

Imagem

rts, além da Java Persistence API e o NetBeans 6.0, para criar relatórios com produtividade

Neste artigo, vamos mostrar, em um exemplo realista e prático, como combinar duas tecnologias importantes em aplicações comerciais: a API de geração de relatórios JasperReports e a Java Persistence API (JPA).

O exemplo visa suportar o levantamento das horas gastas em projetos de desenvolvimento para funcionários de uma empresa de software. A Figura 1 mostra o resultado final do relatório que será criado. O projeto web usado neste artigo tem uma única página JSP que contém um link para o servlet que executa o relatório. Ele é baseado em três entidades: Projeto, Funcionário e Lançamento. Os dados do relatório são obtidos a partir de um banco MySQL. O diagrama de classes do projeto é mostrado na Figura 2 e as tabelas do banco na Figura 3. Disponibilizamos para download no site da Java Magazine o projeto completo, juntamente com o script para criação do banco de dados.

Para facilitar o desenvolvimento, vamos usar o iReport para o layout do relatório e o NetBeans 6.0 para desenvolver a aplicação web e as entidades JPA. Usaremos também o servidor de aplicações Apache Tomcat 6, que vem integrado com o NetBeans, bem como a implementação JPA fornecida com este IDE (o TopLink Essentials). Você pode obter o iReport em jasperforge.org/sf/projects/ireport (todas as bibliotecas necessárias, inclusive as do JasperReports, são incluídas no download principal).

 

Imagem 

Figura 1. Resultado final do relatório

 

Imagem 

Figura 2. Diagrama de classes (para as entidades)

 

Imagem 

Figura 3. Tabelas do banco de dados

 

Criando o projeto

No NetBeans, vá em File|New Project, selecione Web Application e clique em Next. Digite “ControleProjetos” para o nome do projeto, clique em Next e na última tela clique em Finalize.

Clique com o botão direito sobre o nó do projeto e selecione Properties. Na janela que aparece, escolha Libraries, à esquerda. Clique em Add Library, selecione TopLink Essentials e confirme clicando no outro botão Add Library.

Depois clique em Add JAR/Folder e coloque os arquivos JAR que estão na pasta lib do iReport, conforme se vê na Figura 4. Na parte esquerda desta janela, selecione Run e coloque /index.jsp no item Relative URL. Finalize a configuração clicando em OK.

 

Imagem

Figura 4. Configurando as bibliotecas de relatórios

 

Unidade de Persistência

O próximo passo é criar a unidade de persistência JPA. Vá em File|New File e no quadro Categories selecione Persistence. Em File Types escolha Persistence Unit e clique em Next. Na janela seguinte, já aparecerá o nome “ControleProjetosPU”, que não precisa ser alterado.

Mude Persistence Library para TopLink (o default) e em Database Connection selecione a URL de conexão para o banco de dados que será usado no projeto (você precisará, é claro, ter criado o banco de dados indicado no início do artigo). Caso não exista uma conexão, crie uma nova selecionando New Database Connection. No item Table Generation Strategy selecione None e clique em Finish.

Entidades

Vamos criar as classes das entidades Projeto, Funcionario e Lancamento, usando recursos do NetBeans e depois customizando o código gerado.

Selecione File|New File e selecione a categoria Persistence. Escolha Entity Classes from Database e clique em Next. Na janela que aparecerá, selecione a nossa conexão e mova as tabelas FUNCIONARIOS, PROJETOS e LANCAMENTOS para o quadro Selected Tables usando Add; depois clique em Next. Na tela seguinte, mude o nome das classes tirando a letra “s” do final. Também digite um nome de pacote em Package. Ao clicar em Finish, as classes serão criadas. Veja uma seleção de telas na Figura 5. Esses passos geram para você a maior parte do persistence.xml (Listagem 1) o arquivo de configurações do JPA. Este arquivo pode ser encontrado no nó Configuration Files do projeto. Devem ser criadas algumas propriedades adicionais para a conexão ao banco de dados, como se vê na listagem.

 

Imagem 

Imagem

Figura 5. Criação das classes de entidades

Listagem 1. persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
    xmlns="
http:/

   /java.sun.com/xml/ns/persistence"
    xmlns:xsi="
http:/

   /www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
title="Acesse aqui"http:/

   /java.sun.com/xml/ns/persistence              
   
http:/

   /java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="ControleProjetosPU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.PersistenceProvider</provider>
    <class>br.com.globalcode.model.Lancamento
</class>
    <class>br.com.globalcode.model.Funcionario</class>
    <class>br.com.globalcode.model.Projeto</class>
    <properties>
      <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/jm"/>
      <property name="toplink.jdbc.user" value="jm"/>
...

Quer ler esse conteúdo completo? Tenha acesso completo