Skip to content

5. Anexos

Aqui descrevemos a instalação e a utilização básica das ferramentas utilizadas no documento «Java 5 Persistence in Practice». As informações fornecidas abaixo estão atualizadas em maio de 2007. Estas tornar-se-ão rapidamente obsoletas. Quando isso acontecer, o leitor será aconselhado a seguir procedimentos semelhantes, mas não idênticos. As instalações foram realizadas numa máquina com Windows XP Professional.

5.1. Java

Utilizaremos a versão mais recente do Java disponível na Sun [http://www.sun.com]. Os downloads estão acessíveis através do URL [http://java.sun.com/javase/downloads/index.jsp]:

Image

Image

Execute a instalação do JDK a partir do ficheiro descarregado. Por predefinição, o Java é instalado em [C:\Program Files\Java]:

Image

5.2. Eclipse

5.2.1. Instalação básica

O Eclipse é um IDE disponível no endereço [http://www.eclipse.org/] e pode ser descarregado a partir do endereço [http://www.eclipse.org/downloads/]. A seguir, descarregamos o Eclipse 3.2.2:

Image

Depois de descarregar o ficheiro ZIP, extraia-o para uma pasta no seu disco rígido:

Image

Iremos referir-nos à pasta de instalação do Eclipse, apresentada acima como [C:\devjava\eclipse 3.2.2\eclipse], como <eclipse>. [eclipse.exe] é o ficheiro executável e [eclipse.ini] é o seu ficheiro de configuração. Vamos dar uma vista de olhos ao seu conteúdo:

1
2
3
-vmargs
-Xms40m
-Xmx256m

Estes argumentos são utilizados ao iniciar o Eclipse da seguinte forma:

eclipse.exe -vmargs -Xms40m -Xmx256m

Isto permite obter o mesmo resultado que a utilização do ficheiro .ini, criando um atalho que inicia o Eclipse com estes mesmos argumentos. Vamos explicá-los:

  1. -vmargs: indica que os argumentos seguintes se destinam à Máquina Virtual Java que irá executar o Eclipse. O Eclipse é uma aplicação Java.
  2. -Xms40m: ?
  3. -Xmx256m: define o tamanho da memória em MB alocada à Máquina Virtual Java (JVM) que executa o Eclipse. Por predefinição, este tamanho é de 256 MB, como mostrado aqui. Se o sistema o permitir, é preferível 512 MB.

Estes argumentos são passados para a JVM que irá executar o Eclipse. A JVM é representada por um ficheiro [java.exe] ou [javaw.exe]. Onde se encontra este ficheiro? Na verdade, pode ser localizado de várias formas:

  • no PATH do SO
  • na pasta <JAVA_HOME>/jre/bin, onde JAVA_HOME é uma variável de sistema que define a pasta raiz de um JDK.
  • num local passado como argumento ao Eclipse na forma -vm <path>\javaw.exe

Esta última solução é preferível porque as outras duas estão sujeitas às variações decorrentes de instalações de aplicações posteriores, que podem alterar o PATH do sistema operativo ou a variável JAVA_HOME.

Criamos, portanto, o seguinte atalho:

Image

alvo
<eclipse>\eclipse.exe" -vm "C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe" -vmargs -Xms40m -Xmx512m
Iniciar em
pasta de instalação do Eclipse <eclipse>

Depois de fazer isso, inicie o Eclipse usando este atalho. Aparece uma caixa de diálogo:

Image

Um [workspace] é um espaço de trabalho. Vamos aceitar os valores predefinidos fornecidos. Por predefinição, os projetos do Eclipse serão criados na pasta <workspace> especificada nesta caixa de diálogo. Existe uma forma de substituir este comportamento. É isso que faremos sistematicamente. Portanto, a resposta dada nesta caixa de diálogo não é importante.

Assim que esta etapa estiver concluída, o ambiente de desenvolvimento do Eclipse é apresentado:

Image

Fechamos a vista [Welcome] conforme sugerido acima:

Image

Antes de criar um projeto Java, vamos configurar o Eclipse para especificar o JDK a utilizar na compilação de projetos Java. Para tal, selecionamos a opção [Window / Preferences / Java / Installed JREs]:

Image

Normalmente, o JRE (Java Runtime Environment) utilizado para iniciar o próprio Eclipse deve estar presente na lista de JREs. Este será, geralmente, o único. Pode adicionar JREs utilizando o botão [Adicionar]. Deve, então, especificar o diretório raiz do JRE. O botão [Search] irá iniciar uma pesquisa por JREs no disco. Esta é uma boa forma de manter um registo dos JREs que instala e que depois se esquece de desinstalar ao atualizar para uma versão mais recente. Acima, o JRE marcado é aquele que será utilizado para compilar e executar projetos Java. Este é o que foi instalado na Secção 5.1 e também utilizado para iniciar o Eclipse. Ao clicar duas vezes nele, abrem-se as suas propriedades:

Image

Agora, vamos criar um projeto Java [Arquivo / Novo / Projeto]:

Selecione [Projeto Java] e, em seguida, [Seguinte] ->

Image

Em [2], especificamos uma pasta vazia onde o projeto Java será instalado. Em [1], atribuímos um nome ao projeto. Não é necessário que o nome seja o mesmo da pasta, como o exemplo acima pode sugerir. Depois de fazer isto, usamos o botão [Next] para avançar para a página seguinte do assistente de criação:

Image

Acima, criamos uma pasta especial dentro do projeto para armazenar os ficheiros de código-fonte (.java):

Image

  • Em [1], vemos a pasta [src], que conterá os ficheiros fonte .java
  • Em [2], vemos a pasta [bin], onde serão armazenados os ficheiros .class compilados

Concluímos o assistente clicando em [Concluir]. Temos agora uma estrutura básica de projeto Java:

Image

Clique com o botão direito do rato no projeto [test1] para criar uma classe Java:

Image

  1. Em [1], a pasta onde a classe será criada. Por predefinição, o Eclipse sugere a pasta do projeto atual.
  2. Em [2], o pacote onde a classe será colocada
  3. Em [3], o nome da classe
  4. Em [4], especificamos que o método estático [main] deve ser gerado

Confirmamos o assistente clicando em [Concluir]. O projeto é então ampliado com uma classe:

Image

O Eclipse gerou o esqueleto da classe. Pode aceder-se a este clicando duas vezes em [Test1.java] acima:

Image

Modificamos o código acima da seguinte forma:

Image

Executamos o programa [Test1.java]: [clique com o botão direito do rato em Test1.java -> Executar como -> Aplicação Java]

Image

O resultado da execução é apresentado na janela [Console]:

Image

A janela [Console] deve aparecer por predefinição. Se isso não acontecer, pode abri-la através de [Janela/Mostrar Vista/Console]:

Image

5.2.2. Escolher um compilador

O Eclipse permite gerar código compatível com Java 1.4, Java 1.5 e Java 1.6. Por predefinição, está configurado para gerar código compatível com Java 1.4. A API JPA requer código Java 1.5. Alteramos o tipo de código gerado através de [Janela / Preferências / Java / Compilador]:

  • em [1]: selecionar a opção [Java / Compilador]
  • em [2]: Selecione a compatibilidade com Java 5.0

5.2.3. Instalação dos e es do Callisto

A versão base instalada acima permite-lhe compilar aplicações Java de consola, mas não aplicações Java do tipo web ou Swing; caso contrário, terá de fazer tudo manualmente. Iremos instalar vários plugins:

Proceda da seguinte forma [Ajuda/Atualizações de software/Procurar e instalar]:

  • Em [2], especifique que pretende instalar novos plugins
  • Em [3], especifique os sites onde procurar plugins
  • Em [4], marque os plugins desejados
  • Em [5], o Eclipse indica que selecionou um plugin que depende de outros plugins que não foram selecionados
  • Em [6], utilize o botão [Selecionar obrigatórios] para selecionar automaticamente os plugins em falta
  • Em [7], aceite os termos da licença para estes vários plugins
  • Em [8], verá uma lista de todos os plugins que serão instalados
  • Em [9], inicie o download destes plugins
  • Em [10], assim que estiverem descarregados, instale-os todos sem verificar as suas assinaturas
  • Em [11], depois de instalar os plugins, reinicie o Eclipse
  • Em [12], se for a [Arquivo/Novo/Projeto], verá que agora pode criar aplicações web, o que inicialmente não era possível.

5.2.4. Instalação do plugin [ TestNG]

O TestNG (Test Next Generation) é uma ferramenta de testes unitários semelhante em conceito ao JUnit. No entanto, oferece melhorias que nos levam a preferi-lo ao JUnit neste caso. Procedemos como antes: [Ajuda/Atualizações de Software/Procurar e Instalar]:

  • Em [2], indicamos que queremos instalar novos plugins
  • em [3a], o site de download do [TestNG] não está listado. Adicionamo-lo utilizando [3b]
  • Em [4b]: o site do plugin é [http://beust.com/eclipse]. Em [4a], introduza o que quiser.
  • Em [5a], o plugin [TestNG] está selecionado para a atualização. Em [5b], iniciamos a atualização.
  • Em [6], a ligação ao site do plugin foi estabelecida. São-nos apresentados todos os plugins disponíveis no site. Aqui existe apenas um, que selecionamos antes de avançarmos para o passo seguinte.
  • Em [7], aceite os termos da licença do plugin
  • Em [8], vemos uma lista de todos os plugins que serão instalados — um, neste caso. Iniciamos o download. Depois, tudo decorre conforme descrito acima para os plugins do Callisto.

Assim que o Eclipse for reiniciado, podemos verificar a presença do novo plugin, por exemplo, visualizando as vistas disponíveis [Janela / Mostrar Vista / Outras]:

 

Como mostrado acima, existe agora uma vista [TestNG] que não existia anteriormente.

5.2.5. Instalação do plugin [ Hibernate Tools]

O Hibernate é um fornecedor JPA, e o plugin [Hibernate Tools] para o Eclipse é útil para criar aplicações JPA. Em maio de 2007, apenas a sua versão mais recente (3.2.0beta9) suporta o trabalho com o Hibernate/JPA, e não está disponível através do mecanismo que acabámos de descrever. Apenas estão disponíveis versões mais antigas. Por isso, vamos proceder de forma diferente.

O plugin está disponível no site do Hibernate Tools: http://tools.hibernate.org/.

  • Em [1], selecione a versão mais recente do Hibernate Tools
  • Em [2], faça o download
  • Em [3], utilize uma ferramenta de descompactação para extrair o ficheiro ZIP descarregado para a pasta <eclipse> (é melhor ter o Eclipse fechado)
  • Em [4], aceite que alguns ficheiros serão substituídos durante a operação

Reinicie o Eclipse:

  • em [1]: Abra uma vista
  • em [2]: existe agora uma perspetiva [Hibernate Console]

Não vamos avançar mais com o plugin [Hibernate Tools] (Cancelar em [2]). A forma de o utilizar é explicada nos exemplos do tutorial.

Por vezes, o Eclipse não deteta novos plug-ins. Pode forçá-lo a voltar a analisar todos os seus plug-ins utilizando a opção -clean. Assim, o executável do atalho do Eclipse seria modificado da seguinte forma:


"<eclipse>\eclipse.exe" -clean -vm "C:\Program Files\Java\jre1.6.0_01\bin\javaw.exe" -vmargs -Xms40m -Xmx512m

Assim que os novos plugins forem detetados pelo Eclipse, remova a opção -clean acima.

5.2.6. Instalação do plugin [ SQL Explorer]

Vamos agora instalar um plugin que nos permitirá explorar o conteúdo de uma base de dados diretamente a partir do Eclipse. Os plugins disponíveis para o Eclipse podem ser encontrados no site [http://eclipse-plugins.2y.net/eclipse/plugins.jsp]:

  • em [1]: o site dos plugins do Eclipse
  • em [2]: selecione a categoria [Base de dados]
  • [3]: Na categoria [Base de dados], selecione uma visualização ordenada por classificação (não é muito fiável, dado o reduzido número de pessoas a votar)
  • em [4]: o QuantumDB ocupa o primeiro lugar
  • em [5]: escolhemos o SQLExplorer, que é mais antigo, tem uma classificação mais baixa (3.º), mas continua a ser muito bom. Acedemos ao site do plugin [plugin-homepage]
  • em [6] e [7]: descarregamos o plugin.
  • em [8]: descompacte o ficheiro zip do plugin na pasta do Eclipse.

Para verificar, reinicie o Eclipse, utilizando opcionalmente a opção -clean:

  • em [1]: abra uma nova perspetiva
  • em [2]: vemos que a perspetiva [SQL Explorer] está disponível. Voltaremos a este assunto mais tarde.

5.3. Container de servlets Tomcat 5.5

5.3.1. Instalação

Para executar servlets, precisamos de um contentor de servlets. Aqui apresentamos um deles, o Tomcat 5.5, disponível em http://tomcat.apache.org/. Descrevemos o procedimento (maio de 2007) para a sua instalação. Se já estiver instalada uma versão anterior do Tomcat, é melhor removê-la primeiro.

Image

Para descarregar o produto, siga a ligação [Tomcat 5.x] acima:

Image

Pode descarregar o ficheiro .exe para a plataforma Windows. Após a descarga, inicie a instalação do Tomcat clicando duas vezes no ficheiro:

Image

Aceite os termos da licença ->

Image

Clique em [Seguinte] ->

Image

Aceite a pasta de instalação sugerida ou altere-a utilizando [Procurar] ->

Image

Defina o nome de utilizador e a palavra-passe para o administrador do servidor Tomcat. Aqui, utilizámos [admin / admin] ->

O Tomcat 5.x requer o JRE 1.5. Normalmente, ele deve detetar o que está instalado no seu computador. Acima, o caminho especificado é o do JRE 1.6 descarregado na secção 5.1. Se não for encontrado nenhum JRE, especifique o seu diretório raiz utilizando o botão [1]. Depois de fazer isso, utilize o botão [Install] para instalar o Tomcat 5.x ->

Image

O botão [Concluir] finaliza a instalação. A presença do Tomcat é indicada por um ícone no lado direito da barra de tarefas do Windows:

Image

Clicar com o botão direito do rato neste ícone dá-lhe acesso aos comandos Iniciar e Parar do servidor:

Image

Utilizamos a opção [Parar serviço] para parar o servidor web agora:

Image

Observe a alteração no estado do ícone. O ícone pode ser removido da barra de tarefas:

Image

O Tomcat foi instalado na pasta escolhida pelo utilizador, à qual nos referiremos agora como <tomcat>. A estrutura de diretórios da versão 5.5.23 do Tomcat descarregada é a seguinte:

Image

A instalação do Tomcat adicionou vários atalhos ao menu [Iniciar]. Utilizamos o link [Monitor] abaixo para iniciar a ferramenta de paragem/arranque do Tomcat:

Image

Em seguida, vemos o ícone mostrado anteriormente:

Image

O monitor do Tomcat pode ser iniciado clicando duas vezes neste ícone:

Image

Os botões [Iniciar - Parar - Pausar] - Reiniciar permitem-nos iniciar, parar e reiniciar o servidor. Iniciamos o servidor clicando em [Iniciar] e, em seguida, utilizando um navegador, introduzimos o URL http://localhost:8080. Deveremos ver uma página semelhante à seguinte:

Image

Pode seguir as ligações abaixo para verificar se o Tomcat foi instalado corretamente:

Image

Vale a pena explorar todos os links da página [http://localhost:8080], e incentivamos o leitor a fazê-lo. Teremos a oportunidade de voltar a abordar os links que permitem gerir as aplicações web implementadas no servidor:

Image

5.3.2. Implantação de uma aplicação web no servidor Tomcat

5.3.3. Implantação

Uma aplicação web deve seguir certas regras para ser implementada num contentor de servlets. Seja <webapp> o diretório de uma aplicação web. Uma aplicação web consiste em:

classes
na pasta <webapp>\WEB-INF\classes
arquivos Java
na pasta <webapp>\WEB-INF\lib
visualizações, recursos (.jsp, .html, ...)
na pasta <webapp> ou subpastas

A aplicação web é configurada por um ficheiro XML: <webapp>\WEB-INF\web.xml. Este ficheiro não é necessário em casos simples, especialmente quando a aplicação web contém apenas ficheiros estáticos. Vamos criar o seguinte ficheiro HTML:

<html>
    <head>
      <title>Application exemple</title>
  </head>
  <body>
      Application exemple active ....
  </body>
</html>

e vamos guardá-lo numa pasta:

Image

Se carregarmos este ficheiro num navegador, obtemos a seguinte página:

Image

O URL exibido pelo navegador mostra que a página não foi servida por um servidor web, mas carregada diretamente pelo navegador. Agora queremos que ela fique disponível através do servidor web Tomcat.

Voltemos à árvore de diretórios <tomcat>:

Image

As aplicações web implementadas no servidor Tomcat são configuradas utilizando ficheiros XML localizados na pasta [<tomcat>\conf\Catalina\localhost]:

Estes ficheiros XML podem ser criados manualmente, uma vez que a sua estrutura é simples. Em vez de seguir esta abordagem, utilizaremos as ferramentas web fornecidas pelo Tomcat.

5.3.4. Administração do Tomcat

Na sua página de início de sessão http://localhost:8080, o servidor disponibiliza links para a administração:

Image

O link [Administração do Tomcat] permite-nos configurar os recursos que o Tomcat disponibiliza às aplicações web implementadas no seu interior, tais como um conjunto de ligações à base de dados. Vamos seguir o link:

Image

A página que aparece indica que a administração do Tomcat 5.x requer um pacote específico chamado «admin». Vamos voltar ao site do Tomcat [http://tomcat.apache.org/download-55.cgi]:

Image

Vamos descarregar o ficheiro zip intitulado [Web Application Administration] e, em seguida, descompactá-lo. O seu conteúdo é o seguinte:

Image

A pasta [admin] deve ser copiada para [<tomcat>\server\webapps], onde <tomcat> é a pasta onde o Tomcat 5.x foi instalado:

Image

A pasta [localhost] contém um ficheiro [admin.xml] que deve ser copiado para [<tomcat>\conf\Catalina\localhost]:

Image

Pare e reinicie o Tomcat, caso este estivesse a funcionar. Em seguida, utilizando um navegador, aceda novamente à página de início de sessão do servidor web:

Image

Clique na ligação [Tomcat Administration]. Verá uma página de início de sessão (pode ser necessário recarregar ou atualizar a página para a ver):

Aqui, deve introduzir novamente as credenciais que forneceu durante a instalação do Tomcat. No nosso caso, introduzimos o nome de utilizador e a palavra-passe como «admin». Ao clicar no botão [Iniciar sessão], será direcionado para a página seguinte:

Image

Esta página permite ao administrador do Tomcat definir

  • fontes de dados,
  • as informações necessárias para enviar e-mails (Sessões de Correio),
  • dados de ambiente acessíveis a todas as aplicações (Entradas de Ambiente),
  • gerir utilizadores e administradores do Tomcat (Utilizadores),
  • gerir grupos de utilizadores (Grupos),
  • definir funções (ou seja, o que um utilizador pode e não pode fazer),
  • definir as características das aplicações web implementadas pelo servidor (Serviço Catalina)

Vamos seguir o link [Funções] acima:

Image

Uma função permite definir o que um utilizador ou grupo de utilizadores pode ou não fazer. Certos direitos estão associados a uma função. Cada utilizador está associado a uma ou mais funções e possui os direitos a elas associados. A função [manager] abaixo concede o direito de gerir aplicações web implementadas no Tomcat (implementação, arranque, encerramento, descarregamento). Iremos criar um utilizador [manager] e associá-lo à função [manager] para permitir que este faça a gestão das aplicações Tomcat. Para tal, seguimos o link [Utilizadores] na página de administração:

Image

Vemos que já existem vários utilizadores. Utilizamos a opção [Criar novo utilizador] para criar um novo utilizador:

Image

Atribuímos ao utilizador manager a palavra-passe manager e atribuímos-lhe a função manager. Utilizamos o botão [Save] para confirmar esta adição. O novo utilizador aparece na lista de utilizadores:

Image

Este novo utilizador será adicionado ao ficheiro [<tomcat>\conf\tomcat-users.xml]:

Image

cujo conteúdo é o seguinte:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="manager"/>
  <role rolename="admin"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="role1" password="tomcat" roles="role1"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="manager" password="manager" fullName="" roles="manager"/>
  <user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
  • Linha 10: o utilizador [manager] que foi criado

Outra forma de adicionar utilizadores é editar este ficheiro diretamente. Este é o procedimento a seguir se, por exemplo, tiver esquecido a palavra-passe da conta admin ou manager.

5.3.5. Gestão de aplicações Web implementadas

Agora, voltemos à página de início de sessão [http://localhost:8080] e sigamos a ligação [Tomcat Manager]:

Image

Isto abre uma página de autenticação. Iniciamos sessão como manager / manager, ou seja, o utilizador com a função [manager] que acabámos de criar. Na verdade, apenas um utilizador com esta função pode utilizar este link. Na linha 11 do [tomcat-users.xml], vemos que o utilizador [admin] também tem a função [manager]. Poderíamos, portanto, utilizar também as credenciais [admin / admin].

Image

Somos direcionados para uma página que lista as aplicações atualmente implementadas no Tomcat:

Image

Podemos adicionar uma nova aplicação utilizando os formulários na parte inferior da página:

Image

Aqui, queremos implementar a aplicação de exemplo que criámos anteriormente no Tomcat. Fazemos isso da seguinte forma:

Image

Caminho de contexto
/example
o nome utilizado para identificar a aplicação web
a ser implementada
URL do diretório
C:\data\work\2006-2007\eclipse\dvp-jpa\annexes\tomcat\example
a pasta da aplicação web

Para recuperar o ficheiro [C:\data\work\2006-2007\eclipse\dvp-jpa\annexes\tomcat\example\example.html], solicitaremos a URL [http://localhost:8080/exemple/exemple.html] ao Tomcat. O contexto é utilizado para designar a raiz da árvore de diretórios da aplicação web implementada. Utilizamos o botão [Deploy] para implementar a aplicação. Se tudo correr bem, obtemos a seguinte página de resposta:

Image

e a nova aplicação aparece na lista de aplicações implementadas:

Vamos comentar a linha de contexto /example acima:

/example
link para http://localhost:8080/exemple
Iniciar
permite-lhe iniciar a aplicação
Parar
permite-lhe parar a aplicação
Atualizar
recarrega a aplicação. Isto é necessário, por exemplo, quando adicionou,
modificado ou eliminado determinadas classes da aplicação.
Desinstalar
Remove o contexto [/example]. A aplicação desaparece da lista
de aplicações disponíveis.

Agora que a nossa aplicação /example está implementada, podemos executar alguns testes. Solicitamos a página [example.html] através do URL [http://localhost:8080/exemple/vues/exemple.html]:

Image

Outra forma de implementar uma aplicação web no servidor Tomcat é fornecer as informações que introduzimos através da interface web num ficheiro [context].xml localizado na pasta [<tomcat>\conf\Catalina\localhost], onde [context] é o nome da aplicação web.

Voltemos à interface de administração do Tomcat:

Image

Vamos remover a aplicação [/example] utilizando o link [Undeploy]:

Image

A aplicação [/example] já não faz parte da lista de aplicações ativas. Agora, vamos definir o seguinte ficheiro [example.xml]:

<Context docBase="C:/data/travail/2006-2007/eclipse/dvp-jpa/annexes/tomcat/exemple">
</Context>

O ficheiro XML consiste numa única tag <Context>, cujo atributo docBase define a pasta que contém a aplicação web a ser implementada. Vamos colocar este ficheiro em <tomcat>\conf\Catalina\localhost:

Image

Pare e reinicie o Tomcat, se necessário, e, em seguida, visualize a lista de aplicações ativas utilizando o administrador do Tomcat:

Image

A aplicação [/example] está, de facto, presente. Vamos aceder ao URL num navegador:

[http://localhost:8080/exemple/exemple.html]:

Image

Uma aplicação web implementada desta forma pode ser removida da lista de aplicações implementadas, da mesma forma que anteriormente, utilizando o link [Undeploy]:

Image

Neste caso, o ficheiro [example.xml] é automaticamente removido da pasta [<tomcat>\conf\Catalina\localhost].

Por fim, para implementar uma aplicação web no Tomcat, também pode definir o seu contexto no ficheiro [<tomcat>\conf\server.xml]. Não abordaremos este ponto aqui.

5.3.6. Aplicação web com uma página inicial

Quando solicitamos a URL [http://localhost:8080/exemple/], obtemos a seguinte resposta:

Image

Com algumas versões anteriores do Tomcat, teríamos recebido o conteúdo do diretório físico da aplicação [/example].

Podemos configurar o sistema para que, quando o contexto for solicitado, seja exibida a chamada página inicial. Para tal, criamos um ficheiro [web.xml] e colocamo-lo na pasta <example>\WEB-INF, onde <example> é a pasta física da aplicação web [/example]. O ficheiro é o seguinte:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

  <display-name>Application Exemple</display-name>
  <description>Application web minimale</description>
    <welcome-file-list>
        <welcome-file>/exemple.html</welcome-file>
    </welcome-file-list>    
</web-app>
  • Linhas 2–5: A tag raiz <web-app> com atributos copiados e colados do ficheiro [web.xml] da aplicação Tomcat [/admin] (<tomcat>/server/webapps/admin/WEB-INF/web.xml).
  • linha 7: o nome de exibição da aplicação web. Trata-se de um nome escolhido livremente, com menos restrições do que o nome do contexto da aplicação. Por exemplo, pode conter espaços, o que não é possível com o nome do contexto. Este nome é exibido, por exemplo, pelo administrador do Tomcat:

Image

  1. Linha 8: Descrição da aplicação web. Este texto pode ser recuperado programaticamente.
  2. Linhas 9–11: A lista de ficheiros de boas-vindas. A tag <welcome-file-list> é utilizada para definir a lista de visualizações a apresentar quando um cliente solicita o contexto da aplicação. Podem existir várias visualizações. A primeira encontrada é apresentada ao cliente. Aqui temos apenas uma: [/example.html]. Assim, quando um cliente solicita o URL [/example], será na verdade o URL [/example/example.html] que lhe será servido.

Vamos guardar este ficheiro [web.xml] em <example>\WEB-INF:

Image

Se o Tomcat ainda estiver em execução, pode forçá-lo a recarregar a aplicação web [/example] utilizando o link [Reload]:

Image

Durante esta operação de «recarregamento», o Tomcat volta a ler o ficheiro [web.xml] contido em [<example>\WEB-INF], caso este exista. É o que acontece neste caso. Se o Tomcat tiver sido parado, reinicie-o.

Utilizando um navegador, aceda ao URL [http://localhost:8080/exemple/]:

Image

O mecanismo do ficheiro host funcionou.

5.3.7. Integrar o Tomcat no Eclipse

Vamos agora integrar o Tomcat no Eclipse. Esta integração permite-lhe:

  • iniciar/parar o Tomcat a partir do Eclipse
  • desenvolver aplicações web Java e executá-las no Tomcat. A integração Eclipse/Tomcat permite-lhe rastrear (depurar) a execução da aplicação, incluindo a execução de classes Java (servlets) executadas pelo Tomcat.

Vamos iniciar o Eclipse e, em seguida, abrir a vista [Servidores]:

  • em [1]: Window/Show View/Other
  • em [2]: selecione a vista [Servidores] e clique em [OK]
  • em [1], temos agora uma nova vista [Servidores]
  • Em [2], clique com o botão direito do rato na vista e selecione [Novo/Servidor]
  • em [3], selecione o servidor [Tomcat 5.5] e, em seguida, clique em [Seguinte]
  • Em [4], especifique o diretório de instalação do Tomcat 5.5
  • Em [5], indique que não existem projetos Eclipse/Tomcat neste momento. Clique em [Concluir]

A adição do servidor faz com que apareça uma pasta no Explorador de Projetos do Eclipse [6] e um servidor na vista [Servidores] [7]:

A vista [Servidores] exibe todos os servidores registados; aqui, apenas o servidor Tomcat 5.5 que acabámos de adicionar. Ao clicar com o botão direito do rato sobre ele, tem acesso a comandos para iniciar, parar ou reiniciar o servidor:

Image

Acima, estamos a iniciar o servidor. Após o arranque, são gravados vários registos na vista [Console]:

1
2
3
4
5
6
7
8
16 mai 2007 09:51:57 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
...
16 mai 2007 09:51:57 org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initialisation de Coyote HTTP/1.1 sur http-8080
...
INFO: Find registry server-registry.xml at classpath resource
16 mai 2007 09:51:58 org.apache.catalina.startup.Catalina start
INFO: Server startup in 828 ms

É preciso algum tempo para se habituar a compreender estes registos. Não nos vamos deter neles por agora. No entanto, é importante verificar se não indicam quaisquer erros de carregamento de contexto. Com efeito, quando iniciado, o servidor Tomcat/Eclipse tenta carregar o contexto das aplicações que gere. O carregamento do contexto de uma aplicação envolve o processamento do seu ficheiro [web.xml] e o carregamento de uma ou mais classes que o inicializam. Podem ocorrer vários tipos de erros:

  • o ficheiro [web.xml] tem um erro de sintaxe. Este é o erro mais comum. Recomenda-se a utilização de uma ferramenta capaz de validar um documento XML durante a sua criação.
  • algumas classes a serem carregadas não foram encontradas. Estas são procuradas em [WEB-INF/classes] e [WEB-INF/lib]. Deve, geralmente, verificar a presença das classes necessárias e a ortografia das que estão declaradas no ficheiro [web.xml].

O servidor iniciado a partir do Eclipse não tem a mesma configuração que o instalado na Secção 5.3. Para verificar isto, aceda ao URL [http://localhost:8080] utilizando um navegador:

Image

Esta resposta não indica que o servidor não está a funcionar, mas sim que o recurso / solicitado não está disponível. Com o servidor Tomcat integrado no Eclipse, estes recursos serão projetos web. Veremos isto mais tarde. Por agora, vamos parar o Tomcat:

Image

O modo de funcionamento anterior pode ser alterado. Voltemos à vista [Servidores] e façamos duplo-clique no servidor Tomcat para aceder às suas propriedades:

A caixa de seleção [1] é responsável pelo comportamento anterior. Quando marcada, as aplicações web desenvolvidas no Eclipse não são declaradas nos ficheiros de configuração do servidor Tomcat associado, mas sim em ficheiros de configuração separados. Como resultado, as aplicações predefinidas do servidor Tomcat — [admin] e [manager], que são duas aplicações úteis — não estão disponíveis. Por isso, vamos desmarcar [1] e reiniciar o Tomcat:

Agora que isto está feito, vamos aceder ao URL [http://localhost:8080] num navegador:

Image

Observamos o comportamento descrito na Secção 5.3.4.

Nos nossos exemplos anteriores, utilizámos um navegador externo ao Eclipse. Também podemos utilizar um navegador integrado no Eclipse:

Image

Acima, selecionamos o navegador interno. Para o iniciar a partir do Eclipse, pode utilizar o seguinte ícone:

Image

O navegador que será efetivamente iniciado será aquele selecionado através da opção [Janela -> Navegador Web]. Aqui, obtemos o navegador interno:

Image

Se necessário, inicie o Tomcat a partir do Eclipse e introduza o URL [http://localhost:8080] em [1]:

Image

Siga o link [Tomcat Manager]:

Image

Ser-lhe-á solicitado o [nome de utilizador/palavra-passe] necessário para aceder à aplicação [manager]. Com base na configuração do Tomcat que definimos anteriormente, pode introduzir [admin/admin] ou [manager/manager]. Verá então a lista de aplicações implementadas:

Image

5.4. DBMS Firebird

5.4.1. SGBD Firebird

O SGBD Firebird está disponível no URL [http://www.firebirdsql.org/]:

  • em [1]: utilize a opção [Download.Firebird Relational Database]
  • em [2]: selecione a versão desejada do Firebird
  • em [3]: descarregue o ficheiro binário de instalação

Assim que o ficheiro [3] tiver sido descarregado, clique duas vezes nele para instalar o SGBD Firebird. O SGBD é instalado numa pasta com um conteúdo semelhante ao seguinte:

Image

Os ficheiros binários encontram-se na pasta [bin]:

Image

fbguard.exe
permite iniciar/parar o SGBD
isql.exe
cliente de linha de comandos para a gestão de bases de dados

Note que, por predefinição, o administrador do SGBD é denominado [SYSDBA] e a palavra-passe é [masterkey]. Foram adicionados menus ao [Iniciar]:

Image

A opção [Firebird Guardian] permite iniciar/parar o SGBD. Após o arranque, o ícone do SGBD permanece na barra de tarefas do Windows:

Para criar e gerir bases de dados Firebird utilizando o cliente de linha de comandos [isql.exe], deve ler a documentação incluída com o produto, acessível através dos atalhos do Firebird em [Iniciar/Programas/Firebird 2.0].

Uma forma rápida de trabalhar com o Firebird e aprender SQL é utilizar um cliente gráfico. Um desses clientes é o IB-Expert, descrito na secção seguinte.

5.4.2. Trabalhar com o SGBD Firebird utilizando o IB- Expert

O site principal do IB-Expert é [http://www.ibexpert.com/].

  • Em [1], selecione IBExpert
  • Em [2], selecione o download após escolher o seu idioma preferido, se necessário
  • Em [3], selecione a versão «Personal», pois é gratuita. No entanto, terá de se registar no site.
  • Em [4], descarregue o IBExpert

O IBExpert é instalado numa pasta semelhante à seguinte:

Image

O ficheiro executável é [ibexpert.exe]. Normalmente, existe um atalho disponível no menu [Iniciar]:

Image

Uma vez iniciado, o IBExpert apresenta a seguinte janela:

Image

Utilize a opção [ ar base de dados/Criar base de dados] para criar uma base de dados:

Image

Servidor
(Servidor)
pode ser [local] ou [remoto]. Aqui, o nosso servidor está na mesma máquina que o [IBExpert]. Escolhemos
[local]
Base de dados
(Base de dados)
Utilize o botão [pasta] no menu suspenso para selecionar o ficheiro da base de dados. O Firebird armazena toda a
base de dados num único ficheiro. Esta é uma das suas vantagens.
Pode transferir a base de dados de um computador para outro simplesmente copiando o ficheiro.
A extensão [.fdb] é adicionada automaticamente.
Nome de utilizador
SYSDBA é o administrador predefinido nas distribuições atuais do Firebird
Palavra-passe
(Nome de utilizador)
masterkey é a palavra-passe do administrador SYSDBA nas
distribuições atuais do Firebird
Dialeto
o dialeto SQL a utilizar
Registar base de dados
(Registar a base de dados)
Se esta caixa estiver marcada, o IBExpert exibirá um link para a base de dados após a sua criação

Se, ao clicar no botão [OK] para criar a base de dados, aparecer o seguinte aviso:

Image

isso significa que ainda não iniciou o Firebird. Inicie-o. Aparecerá uma nova janela:

Image

Conjunto de caracteres
(Conjunto de caracteres)
O conjunto de caracteres a utilizar. Recomenda-se selecionar o
[ISO-8859-1] na lista suspensa, o que permite a utilização de caracteres latinos acentuados.
Versão do servidor
(Versão do servidor)
O [IBExpert] é capaz de gerir vários SGBDs derivados do Interbase.
Selecione a versão do Firebird que tem instalada.

Depois de confirmar esta nova janela clicando em [Registar], verá o resultado [1] na janela [Explorador de Bases de Dados]. Esta janela pode ser fechada acidentalmente. Para a reabrir, faça o seguinte [2]:

Para aceder à base de dados criada, basta clicar duas vezes no respetivo link. O IBExpert apresenta então uma estrutura em árvore que permite aceder às propriedades da base de dados:

Image

5.4.3. Criação de uma tabela de dados

Vamos criar uma tabela. Clique com o botão direito do rato em [Tabelas] (ver janela acima) e selecione a opção [Nova Tabela]. Isto abre a janela para definir as propriedades da tabela:

Vamos começar por nomear a tabela [ARTIGOS] utilizando o campo de entrada [1]:

Image

Utilize o campo de entrada [2] para definir uma chave primária [ID]:

Image

Um campo torna-se uma chave primária ao clicar duas vezes no campo [PK] (Chave Primária). Vamos adicionar campos utilizando o botão acima [3]:

Image

Enquanto não tivermos «compilado» a nossa definição, a tabela não é criada. Utilize o botão [Compilar] acima para finalizar a definição da tabela. O IBExpert prepara as consultas SQL para gerar a tabela e solicita confirmação:

Image

Curiosamente, o IBExpert exibe as consultas SQL que executou. Isto permite-lhe aprender tanto a linguagem SQL como qualquer dialeto SQL proprietário que possa ser utilizado. O botão [Commit] valida a transação atual, enquanto [Rollback] a cancela. Aqui, aceitamo-la clicando em [Commit]. Assim que isto estiver feito, o IBExpert adiciona a tabela criada à nossa árvore de bases de dados:

Image

Ao clicar duas vezes na tabela, podemos aceder às suas propriedades:

Image

O painel [Restrições] permite-nos adicionar novas restrições de integridade à tabela. Vamos abri-lo:

Image

Vemos a restrição de chave primária que criámos. Podemos adicionar outras restrições:

  • chaves estrangeiras [Chaves Estrangeiras]
  • restrições de integridade de campo [Verificações]
  • restrições de exclusividade de campo [Uniques]

Vamos especificar isso:

  • os campos [ID, PRICE, CURRENTSTOCK, MINIMUMSTOCK] devem ser >0
  • o campo [NAME] deve ser diferente de vazio e único

Abra o painel [Verificações] e clique com o botão direito do rato na área de definição de restrições para adicionar uma nova restrição:

Image

Vamos definir as restrições desejadas:

Image

Note-se acima que a restrição [NAME<>''] utiliza duas aspas simples, e não aspas duplas. Compile estas restrições utilizando o botão [Compilar] acima:

Image

Mais uma vez, o IBExpert demonstra a sua facilidade de utilização ao apresentar as consultas SQL que executou. Passemos agora ao painel [Constraints/Unique] para especificar que o nome deve ser único. Isto significa que o mesmo nome não pode aparecer duas vezes na tabela.

Image

Vamos definir a restrição:

Image

Depois, vamos compilá-la. Assim que estiver feito, abra o painel [DDL] (Data Definition Language) para a tabela [ARTICLES]:

Image

Este painel exibe o código SQL para gerar a tabela com todas as suas restrições. Pode guardar este código num script para o executar mais tarde:

SET SQL DIALECT 3;
SET NAMES ISO8859_1;
CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

5.4.4. Inserir dados numa tabela

Chegou a hora de inserir dados na tabela [ARTICLES]. Para isso, utilize o painel [Dados]:

Image

Os dados são introduzidos clicando duas vezes nos campos de entrada de cada linha da tabela. Uma nova linha é adicionada utilizando o botão [+] e uma linha é eliminada utilizando o botão [-]. Estas operações são realizadas no âmbito de uma transação que é confirmada utilizando o botão [Confirmar Transação] (ver acima). Sem esta confirmação, os dados serão perdidos.

5.4.5. O Editor SQL [IB-Expert]

A linguagem SQL (Structured Query Language) permite ao utilizador:

  1. criar tabelas, especificando o tipo de dados que irão armazenar e as restrições que os dados devem satisfazer
  2. inserir dados nessas tabelas
  3. modificar determinados dados
  4. eliminar outros dados
  5. utilizar os dados para recuperar informações
  6. ...

O IBExpert permite aos utilizadores realizar os passos 1 a 4 graficamente. Acabámos de ver isso. Quando uma base de dados contém muitas tabelas, cada uma com centenas de linhas, são necessárias informações que são difíceis de obter visualmente. Suponha, por exemplo, que uma loja online tenha milhares de clientes por mês. Todas as compras são registadas numa base de dados. Após seis meses, descobre-se que o produto «X» está com defeito. A empresa quer contactar todos os que o compraram para que possam devolver o produto para uma troca gratuita. Como é que se podem encontrar os endereços destes compradores?

  1. Poderíamos percorrer manualmente todas as tabelas e procurar esses compradores. Isso levaria algumas horas.
  2. Podemos executar uma consulta SQL que irá devolver uma lista dessas pessoas em questão de segundos

O SQL é útil sempre que

  • a quantidade de dados nas tabelas for grande
  • existirem muitas tabelas interligadas
  • as informações a recuperar estiverem espalhadas por várias tabelas
  • ...

Vamos agora apresentar o Editor SQL do IBExpert. Pode aceder-se a ele através da opção [Ferramentas/Editor SQL] ou premindo [F12]:

Image

Isto dá-lhe acesso a um editor avançado de consultas SQL, onde pode executar consultas. Vamos escrever uma consulta:

Image

Execute a consulta SQL utilizando o botão [Executar] acima. Obterá o seguinte resultado:

Image

Acima, o separador [Resultados] apresenta a tabela de resultados do comando SQL [Selecionar]. Para emitir um novo comando SQL, basta voltar ao separador [Editar]. Verá então o comando SQL que foi executado.

Image

Vários botões na barra de ferramentas são úteis:

  • O botão [Nova consulta] permite-lhe avançar para uma nova consulta SQL:

Image

Será então apresentada uma página de edição em branco:

Image

Pode então introduzir uma nova consulta SQL:

Image

e executá-la:

Image

Voltemos ao separador [Editar]. As várias instruções SQL emitidas são armazenadas pelo [IBExpert]. O botão [Consulta Anterior] permite-lhe voltar a uma instrução SQL emitida anteriormente:

Image

Será então redirecionado para a consulta anterior:

Image

O botão [Próxima consulta] permite-lhe avançar para a instrução SQL seguinte:

Image

Verá então a instrução SQL seguinte na lista de instruções SQL armazenadas:

Image

O botão [Eliminar consulta] permite-lhe eliminar uma instrução SQL da lista de instruções guardadas:

Image

O botão [Limpar consulta atual] limpa o conteúdo do editor da instrução SQL apresentada:

Image

O botão [Confirmar] permite-lhe guardar permanentemente as alterações feitas na base de dados:

Image

O botão [Reverter] permite-lhe anular as alterações feitas na base de dados desde o último [Confirmar]. Se não tiver sido executado nenhum [Confirmar] desde a ligação à base de dados, as alterações feitas desde essa ligação serão anuladas.

Image

Vejamos um exemplo. Vamos inserir uma nova linha na tabela:

Image

A instrução SQL é executada, mas nada é exibido. Não sabemos se a inserção ocorreu. Para descobrir, vamos executar a seguinte instrução SQL [New Query]:

Image

Obtemos o seguinte resultado:

Image

A linha foi, de facto, inserida. Vamos agora examinar o conteúdo da tabela de outra forma. Clique duas vezes na tabela [ARTICLES] no explorador de bases de dados:

Image

Obtemos a seguinte tabela:

Image

O botão com a seta acima permite atualizar a tabela. Após a atualização, a tabela acima não se altera. Parece que a nova linha não foi inserida. Vamos voltar ao editor SQL (F12) e, em seguida, confirmar a instrução SQL utilizando o botão [Commit]:

Image

Depois de fazer isso, vamos voltar à tabela [ARTICLES]. Podemos ver que nada mudou, mesmo ao usar o botão [Refresh]:

Image

Acima, abra o separador [Fields] e, em seguida, volte ao separador [Data]. Desta vez, a linha inserida aparece corretamente:

Image

Quando a execução das várias instruções SQL começa, o editor abre o que se denomina uma transação na base de dados. As alterações feitas por estas instruções SQL no editor SQL só serão visíveis enquanto permanecer no mesmo editor SQL (pode abrir vários). É como se o editor SQL não estivesse a trabalhar na base de dados real, mas sim na sua própria cópia. Na realidade, não é exatamente assim que funciona, mas esta analogia pode ajudar-nos a compreender o conceito de transação. Todas as alterações feitas na cópia durante uma transação só serão visíveis na base de dados real depois de terem sido confirmadas através de um [Confirmar Transação]. A transação atual é então encerrada e uma nova transação tem início.

As alterações feitas durante uma transação podem ser desfeitas por uma operação chamada [Rollback]. Vamos tentar a seguinte experiência. Vamos iniciar uma nova transação (basta [Confirmar] a transação atual) com a seguinte instrução SQL:

Image

Vamos executar este comando, que elimina todas as linhas da tabela [ARTICLES], e depois executar [New Query] com o seguinte novo comando SQL:

Image

Obtemos o seguinte resultado:

Image

Todas as linhas foram eliminadas. Lembre-se de que isto foi feito numa cópia da tabela [ARTICLES]. Para verificar isto, clique duas vezes na tabela [ARTICLES] abaixo:

Image

e consulte o separador [Dados]:

Image

Mesmo que utilizemos o botão [Atualizar] ou mudemos para o separador [Campos] e depois voltemos ao separador [Dados], o conteúdo acima permanece inalterado. Isto já foi explicado. Estamos numa outra transação que está a trabalhar na sua própria cópia. Agora, voltemos ao editor SQL (F12) e utilizemos o botão [Reverter] para anular as eliminações de linhas que foram feitas:

Image

É-nos solicitada uma confirmação:

Image

Vamos confirmar. O editor SQL confirma que as alterações foram revertidas:

Image

Vamos executar a consulta SQL acima novamente para verificar. As linhas que tinham sido eliminadas estão agora de volta:

Image

A operação [Rollback] restaurou a cópia em que o editor SQL está a trabalhar para o estado em que se encontrava no início da transação.

5.4.6. Exportar uma base de dados Firebird para um script SQL

Ao trabalhar com vários SGBDs, como é o caso do tutorial «Java 5 Persistence in Practice», é útil poder exportar uma base de dados do SGBD 1 para um script SQL e, em seguida, importar esse script para o SGBD 2. Isto evita uma série de operações manuais. No entanto, isto nem sempre é possível, uma vez que os SGBDs têm frequentemente extensões SQL proprietárias.

Vamos mostrar como exportar a base de dados [dbarticles] anterior para um script SQL:

  • em [1]: Ferramentas / Extrair Metadados, para extrair os metadados
  • em [2]: separador Objetos Meta
  • em [3]: selecione a tabela [Artigos] cuja estrutura (metadados) pretende extrair
  • em [4]: para mover o objeto selecionado à esquerda para a direita
  • em [5]: a tabela [ARTICLES] será incluída nos metadados extraídos
  • em [6]: o separador [Tabela de dados] é utilizado para selecionar as tabelas das quais pretende extrair o conteúdo (no passo anterior, foi a estrutura da tabela que foi exportada)
  • em [7]: para mover o objeto selecionado à esquerda para a direita
  • em [8]: o resultado obtido
  • em [9]: o separador [Opções] permite-lhe configurar determinadas definições de extração
  • em [10]: desmarque as opções relacionadas com a geração de instruções SQL para ligação à base de dados. Estas são específicas do Firebird e, por isso, não são relevantes para nós.
  • em [11]: o separador [Saída] permite especificar onde o script SQL será gerado
  • em [12]: especifique que o script deve ser gerado num ficheiro
  • em [13]: Especifique a localização deste ficheiro
  • em [14]: Inicie a geração do script SQL

O script gerado, com os comentários removidos, é o seguinte:

SET SQL DIALECT 3;
SET NAMES ISO8859_1;

CREATE TABLE ARTICLES (
    ID            INTEGER NOT NULL,
    NOM           VARCHAR(20) NOT NULL,
    PRIX          DOUBLE PRECISION NOT NULL,
    STOCKACTUEL   INTEGER NOT NULL,
    STOCKMINIMUM  INTEGER NOT NULL
);

INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (1, 'article1', 100, 10, 1);
INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (2, 'article2', 200, 20, 2);
INSERT INTO ARTICLES (ID, NOM, PRIX, STOCKACTUEL, STOCKMINIMUM) VALUES (3, 'article3', 300, 30, 3);

COMMIT WORK;

ALTER TABLE ARTICLES ADD CONSTRAINT CHK_ID check (ID>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_PRIX check (PRIX>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKACTUEL check (STOCKACTUEL>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_STOCKMINIMUM check (STOCKMINIMUM>0);
ALTER TABLE ARTICLES ADD CONSTRAINT CHK_NOM check (NOM<>'');
ALTER TABLE ARTICLES ADD CONSTRAINT UNQ_NOM UNIQUE (NOM);
ALTER TABLE ARTICLES ADD CONSTRAINT PK_ARTICLES PRIMARY KEY (ID);

Nota: As linhas 1-2 são específicas do Firebird. Devem ser removidas do script gerado para obter SQL genérico.

5.4.7. Driver JDBC do Firebird

Um programa Java acede aos dados de uma base de dados através de um controlador JDBC específico do SGBD que está a ser utilizado:

Numa arquitetura multicamadas como a acima, o controlador JDBC [1] é utilizado pela camada [DAO] (Data Access Object) para aceder aos dados de uma base de dados.

O controlador JDBC do Firebird está disponível no URL onde o Firebird foi descarregado:

  • em [1]: escolha descarregar o controlador JDBC
  • em [2]: selecione um controlador JDBC compatível com o JDK 1.5
  • em [3]: o arquivo que contém o driver JDBC é [jaybird-full-2.1.1.jar]. Extraia este ficheiro. Ele será utilizado em todos os exemplos JPA com o Firebird.

Colocamo-lo numa pasta a que nos referiremos como <jdbc>:

Image

Para verificar este controlador JDBC, utilizaremos o Eclipse e o plugin SQL Explorer (Secção 5.2.6). Começamos por declarar o controlador JDBC do Firebird:

  • em [1]: vá a Window / Preferences
  • em [2]: selecione a opção SQL Explorer / JDBC Drivers
  • em [3]: selecione o controlador JDBC para o Firebird
  • em [4]: avance para a fase de configuração
  • em [5]: vá para o separador [Extra Class Path]
  • Em [6], selecione o ficheiro do controlador JDBC. Uma vez selecionado, ele aparecerá em [7]. Aqui, selecione o controlador previamente colocado na pasta <jdbc>
  • em [8]: o nome da classe Java do controlador JDBC. Pode ser obtido clicando no botão [8b].
  • Clique em [OK] para confirmar a configuração
  • em [9]: o controlador JDBC do Firebird está agora configurado. Pode prosseguir e utilizá-lo.
  • Em [1]: Abra uma nova perspetiva
  • em [2]: selecione a perspetiva [SQL Explorer]
  • em [3]: crie uma nova ligação
  • Passo [4]: atribua-lhe um nome
  • em [5]: selecione o controlador JDBC do Firebird na lista suspensa
  • em [6]: especifique o URL da base de dados à qual pretende ligar-se, neste caso: [jdbc:firebirdsql:localhost/3050:C:\data\2006-2007\eclipse\dvp-jpa\annexes\jpa\jpa.fdb]. [jpa.fdb] é a base de dados criada anteriormente com o IBExpert.
  • em [7]: o nome de utilizador para a ligação, neste caso [sysdba], o administrador do Firebird
  • em [8]: a sua palavra-passe [masterkey]
  • Confirme as definições de ligação clicando em [OK]
  • em [1]: clique duas vezes no nome da ligação que pretende abrir
  • em [2]: inicie sessão (sysdba, masterkey)
  • em [3]: a ligação está aberta
  • em [4]: a estrutura da base de dados é apresentada. A tabela [ARTICLES] está visível. Selecione-a.
  • Em [5]: Na janela [Detalhes da Base de Dados], vê os detalhes do objeto selecionado em [4], neste caso a tabela [ARTICLES]
  • em [6]: o separador [Columns] apresenta a estrutura da tabela
  • em [7]: o separador [Pré-visualização] mostra a estrutura da tabela

Pode executar consultas SQL na janela [Editor SQL]:

  • em [1]: selecione uma ligação aberta
  • em [2]: digite a instrução SQL a ser executada
  • em [3]: execute-a
  • em [4]: analise a instrução executada
  • em [5]: o seu resultado

5.5. O SGBD a o MySQL5

5.5.1. Instalação

O SGBD MySQL5 está disponível no URL [http://dev.mysql.com/downloads/]:

  • em [1]: selecione a versão desejada
  • em [2]: escolha uma versão para Windows
  • em [3]: selecione a versão do Windows desejada
  • em [4]: o ficheiro ZIP descarregado contém um executável [Setup.exe] [4b] que deve extrair e executar para instalar o MySQL5
  • em [5]: selecione uma instalação típica
  • em [6]: Assim que a instalação estiver concluída, pode configurar o servidor MySQL5
  • em [7]: escolha uma configuração padrão, aquela que faz menos perguntas
  • em [8]: o servidor MySQL5 será um serviço do Windows
  • em [9]: Por predefinição, o administrador do servidor é o utilizador root sem palavra-passe. Pode manter esta configuração ou definir uma nova palavra-passe para o utilizador root. Se a instalação do MySQL5 se seguir à desinstalação de uma versão anterior, este passo poderá falhar. Não há forma de o anular.
  • em [10]: é-lhe solicitado que configure o servidor

A instalação do MySQL5 cria uma pasta em [Iniciar / Programas]:

Image

Pode utilizar o [Assistente de Configuração da Instância do Servidor MySQL] para reconfigurar o servidor:

  • em [3]: alteramos a palavra-passe de root (aqui root/root)

5.5.2. Iniciar / Parar o MySQL5

O servidor MySQL5 foi instalado como um serviço do Windows que arranca automaticamente, ou seja, inicia-se quando o Windows arranca. Este modo de funcionamento é pouco prático. Vamos alterá-lo:

[Iniciar / Painel de Controlo / Desempenho e Manutenção / Ferramentas Administrativas / Serviços]:

  • em [1]: clicamos duas vezes em [Serviços]
  • em [2]: vemos que existe um serviço chamado [MySQL], que está a ser executado [3] e que arranca automaticamente [4].

Para alterar esta configuração, clique duas vezes no serviço [MySQL]:

  • em [1]: defina o serviço para arranque manual
  • em [2]: interrompa-o
  • em [3]: confirmamos a nova configuração do serviço

Para iniciar e parar manualmente o serviço MySQL, podemos criar dois atalhos:

  • em [1]: o atalho para iniciar o MySQL5
  • em [2]: o atalho para o parar

5.5.3. Clientes de administração do MySQL

No site do MySQL, pode encontrar clientes de administração de SGBDs:

  • [1]: Selecione [MySQL GUI Tools], que inclui vários clientes gráficos para administrar o SGBD ou utilizá-lo
  • em [2]: selecione a versão adequada para Windows
  • em [3]: descarregue um ficheiro .msi para executar
  • em [4]: assim que a instalação estiver concluída, aparecerão novos atalhos na pasta [Menu Iniciar / Programas / MySQL].

Inicie o MySQL (usando os atalhos que criou) e, em seguida, inicie o [MySQL Administrator] através do menu acima:

  • em [1]: introduza a palavra-passe do utilizador root (root aqui)
  • em [2]: está conectado e pode ver que o MySQL está ativo

5.5.4. Criação de um utilizador jpa e de uma base de dados jpa

Este tutorial utiliza o MySQL 5 com uma base de dados chamada jpa e um utilizador com o mesmo nome. Vamos agora criá-los. Primeiro, o utilizador:

  • em [1]: selecione [Administração de utilizadores]
  • em [2]: clique com o botão direito do rato na secção [Contas de utilizador] para criar um novo utilizador
  • em [3]: o utilizador chama-se jpa e a sua palavra-passe é jpa
  • em [4]: confirme a criação
  • em [5]: o utilizador [jpa] aparece na janela [Contas de utilizador]

Agora, a base de dados:

  • em [1]: selecione a opção [Catálogos]
  • em [2]: clique com o botão direito do rato na janela [Esquemas] para criar um novo esquema (designa uma base de dados)
  • em [3]: nomeie o novo esquema
  • em [4]: aparece na janela [Esquemas]
  • em [5]: selecione o esquema [jpa]
  • em [6]: os objetos do esquema [jpa] aparecem, incluindo as tabelas. Ainda não há nenhum. Clicar com o botão direito do rato permite criá-los. Deixaremos isso a cargo do leitor.

Voltemos ao utilizador [jpa] para lhe conceder permissões totais sobre o esquema [jpa]:

  • em [1], depois [2]: selecione o utilizador [jpa]
  • em [3]: selecione o separador [Privilégios do Esquema]
  • em [4]: selecione o esquema [jpa]
  • em [5]: conceda ao utilizador [jpa] todos os privilégios no esquema [jpa]
  • em [6]: confirmar as alterações

Para verificar se o utilizador [jpa] consegue trabalhar com o esquema [jpa], feche o administrador do MySQL. Reinicie-o e, desta vez, inicie sessão como [jpa/jpa]:

  • em [1]: iniciar sessão (jpa/jpa)
  • em [2]: a ligação foi bem-sucedida e, em [Schemas], vemos os esquemas para os quais temos permissões. Vemos o esquema [jpa].

Vamos agora criar a mesma tabela [ARTICLES] que criámos com o SGBD Firebird, utilizando o script SQL [schema-articles.sql] gerado na secção 5.4.6.

  • em [1]: utilize a aplicação [MySQL Query Browser]
  • em [2], [3], [4]: inicie sessão (jpa / jpa / jpa)
  • em [5]: abra um script SQL para o executar
  • em [6]: selecione o script [schema-articles.sql] criado na secção 5.4.6.
  • em [7]: o script é carregado
  • em [8]: execute-o
  • em [9]: a tabela [ARTICLES] foi criada

5.5.5. O controlador JDBC para MySQL 5

O controlador JDBC do MySQL pode ser descarregado a partir do mesmo local que o SGBD:

  • em [1]: escolha o controlador JDBC adequado
  • em [2]: selecione a versão adequada do Windows
  • em [3]: no ficheiro ZIP descarregado, o arquivo Java que contém o controlador JDBC é [mysql-connector-java-5.0.5-bin.jar]. Vamos extraí-lo para o utilizar nos exemplos do tutorial JPA.

Colocamo-lo como anteriormente (secção 5.4.7) na pasta <jdbc>:

Para testar este controlador JDBC, utilizaremos o Eclipse e o plugin SQL Explorer. Convidamos o leitor a seguir o procedimento explicado na secção 5.4.7. Apresentamos algumas capturas de ecrã relevantes:

  • em [1]: selecionámos o arquivo do controlador JDBC do MySQL5
  • em [2]: o controlador JDBC do MySQL 5 está disponível
  • em [3]: definição da ligação (utilizador, palavra-passe)=(jpa, jpa)
  • em [4]: a ligação está ativa
  • em [5]: a base de dados está ligada

5.6. O SGBD PostgreSQL

5.6.1. Instalação

O SGBD PostgreSQL está disponível no URL [http://www.postgresql.org/download/]:

  • em [1]: sites de download do PostgreSQL
  • em [2]: escolha uma versão para Windows
  • em [3]: escolha uma versão com um instalador
  • [4]: o conteúdo do ficheiro ZIP descarregado. Clique duas vezes no ficheiro [postgresql-8.2.msi]
  • em [5]: a primeira página do assistente de instalação
  • em [6]: escolha uma instalação típica, aceitando os valores predefinidos
  • em [6b]: crie a conta do Windows que irá executar o serviço PostgreSQL; neste caso, a conta é pgres com a palavra-passe pgres.
  • em [7]: deixe o PostgreSQL criar a conta [pgres] caso ainda não exista
  • em [8]: defina a conta de administrador do SGBD, neste caso postgres com a palavra-passe postgres
  • em [9] e [10]: aceite os valores predefinidos até ao final do assistente. O PostgreSQL será instalado.

A instalação do PostgreSQL cria uma pasta em [Iniciar / Programas]:

Image

5.6.2. Iniciar / Parar o PostgreSQL

O servidor PostgreSQL foi instalado como um serviço do Windows que inicia automaticamente, ou seja, é iniciado assim que o Windows arranca. Esta configuração não é muito prática. Vamos alterá-la:

[Iniciar / Painel de Controlo / Desempenho e Manutenção / Ferramentas Administrativas / Serviços]:

  • Em [1]: Clique duas vezes em [Serviços]
  • em [2]: vemos que existe um serviço chamado [PostgreSQL], que está em execução [3] e que inicia automaticamente [4].

Para alterar esta configuração, clique duas vezes no serviço [PostgreSQL]:

  • em [1]: defina o serviço para arranque manual
  • em [2]: interrompa-o
  • em [3]: confirmamos a nova configuração do serviço

Para iniciar e parar manualmente o serviço PostgreSQL, pode utilizar os atalhos na pasta [PostgreSQL]:

  • em [1]: o atalho para iniciar o PostgreSQL
  • em [2]: o atalho para o parar

5.6.3. Administração do PostgreSQL

Na captura de ecrã acima, a aplicação [pgAdmin III] (3) permite-lhe administrar o SGBD PostgreSQL. Vamos iniciar o SGBD e, em seguida, abrir o [pgAdmin III] através do menu acima:

  • em [1]: clique duas vezes no servidor PostgreSQL para se ligar a ele
  • em [2,3]: inicie sessão como administrador do SGBD, neste caso (postgres / postgres)
  • em [4]: a única base de dados existente
  • em [5]: o único utilizador existente

5.6.4. Criação de um utilizador JPA e de uma base de dados JPA

O tutorial utiliza o PostgreSQL com uma base de dados chamada jpa e um utilizador com o mesmo nome. Vamos agora criá-los. Primeiro, o utilizador:

  • em [1]: criar uma nova função (~utilizador)
  • em [2]: criação do utilizador jpa
  • em [3]: a sua palavra-passe é jpa
  • em [4]: repetimos a palavra-passe
  • em [5]: concedemos ao utilizador permissão para criar bases de dados
  • em [6]: o utilizador [jpa] aparece entre as funções de início de sessão

Agora, quanto à base de dados:

  • em [1]: crie uma nova ligação ao servidor
  • em [2]: será denominada jpa
  • em [3]: a máquina à qual queremos nos conectar
  • em [4]: o utilizador que vai iniciar sessão
  • em [5]: a sua palavra-passe. Confirmamos as definições de ligação clicando em [OK]
  • em [6]: a nova ligação foi criada. Pertence ao utilizador jpa. Este utilizador irá agora criar uma nova base de dados:
  • em [1]: adicionar uma nova base de dados
  • em [2]: o seu nome é jpa
  • em [3]: o seu proprietário é o utilizador jpa criado anteriormente. Clique em [OK] para confirmar
  • em [4]: a base de dados jpa foi criada. Um simples clique nela liga-nos à mesma e revela a sua estrutura:
  • em [5]: aparecem os objetos do esquema [jpa], nomeadamente as tabelas. Ainda não existem. Um clique com o botão direito permitir-nos-ia criá-las. Deixaremos isso a cargo do leitor.

Vamos agora criar a mesma tabela [ARTICLES] que criámos nos DBMS anteriores, utilizando o script SQL [schema-articles.sql] gerado na secção 5.4.6.

  • em [1]: abra o editor de SQL
  • em [2]: abra um script SQL
  • em [3]: selecione o script [schema-articles.sql] criado na secção 5.4.6
  • em [4]: o script está carregado. Executamo-lo.
  • em [5]: a tabela [ARTICLES] foi criada.
  • em [6, 7]: o seu conteúdo

5.6.5. Driver JDBC do PostgreSQL

O controlador JDBC do PostgreSQL está disponível na pasta [jdbc] dentro do diretório de instalação do PostgreSQL:

Colocamos o arquivo JDBC, tal como nos casos anteriores (secção 5.4.7), na pasta <jdbc>:

Para testar este controlador JDBC, utilizaremos o Eclipse e o plugin SQL Explorer. Convidamos o leitor a seguir o procedimento explicado na secção 5.4.7. Apresentamos algumas capturas de ecrã relevantes:

  • em [1]: selecionámos o arquivo do controlador JDBC do PostgreSQL
  • em [2]: o controlador JDBC do PostgreSQL está disponível
  • em [3]: definição da ligação (utilizador, palavra-passe)=(jpa, jpa)
  • em [4]: a ligação está ativa
  • em [5]: a base de dados conectada
  • em [6]: o conteúdo da tabela [ARTICLES]

5.7. O SGBD Oracle 10g Express

5.7.1. Instalação

O Oracle 10g Express DBMS está disponível em [http://www.oracle.com/technology/software/products/database/xe/index.html]:

  • em [1]: o site de download do Oracle 10g Express
  • em [2]: selecione uma versão para Windows. Depois de descarregar o ficheiro, execute-o:
  • em [1]: clique duas vezes no ficheiro [OracleXE.exe]
  • em [2]: a primeira página do assistente de instalação
  • em [3]: aceite a licença
  • em [4]: Aceite as configurações padrão.
  • em [5,6]: o utilizador SYSTEM terá a palavra-passe «system».
  • em [7]: Inicie a instalação

A instalação do Oracle 10g Express cria uma pasta em [Iniciar / Programas]:

Image

5.7.2. Iniciar / Parar o Oracle 10g

Tal como nos DBMS anteriores, o Oracle 10g foi instalado como um serviço do Windows que arranca automaticamente. Vamos alterar esta configuração:

[Iniciar / Painel de Controlo / Desempenho e Manutenção / Ferramentas Administrativas / Serviços]:

  • em [1]: clicamos duas vezes em [Serviços]
  • em [2]: vemos que existe um serviço chamado [OracleServiceXE], que está em execução [3] e que inicia automaticamente [4].
  • em [5]: outro serviço Oracle, chamado «Listener», também está ativo e configurado para iniciar automaticamente.

Para alterar este comportamento, clique duas vezes no serviço [OracleServiceXE]:

  • em [1]: defina o serviço para início manual
  • em [2]: paramos o serviço
  • em [3]: confirmamos a nova configuração do serviço

Faremos o mesmo com o serviço [OracleXETNSListener] (ver [5] acima). Para iniciar e parar manualmente o serviço OracleServiceXE, podemos usar os atalhos na pasta [Oracle]:

  • em [1]: para iniciar o DBMS
  • em [2]: para o parar
  • em [3]: para o gerir (o que o inicia, caso ainda não esteja em execução)

5.7.3. Criação de um utilizador JPA e de uma base de dados JPA

Na captura de ecrã acima, a aplicação [3] permite-lhe administrar o SGBD Oracle 10g Express. Vamos iniciar o SGBD [1] e, em seguida, a aplicação de administração [3] através do menu acima:

  • em [1]: inicie sessão como administrador do SGBD, neste caso (system/system)
  • em [2]: crie um novo utilizador
  • em [4]: nome de utilizador
  • em [5, 6]: a sua palavra-passe, neste caso jpa
  • em [7]: o utilizador jpa foi criado

No Oracle, um utilizador é automaticamente associado a uma base de dados com o mesmo nome. A base de dados «jpa» existe, portanto, ao mesmo tempo que o utilizador «jpa».

5.7.4. Criação da tabela [ARTICLES] na base de dados jpa

O OracleXE foi instalado com um cliente SQL a funcionar no modo de linha de comandos. Pode trabalhar mais confortavelmente com o SQL Developer , também fornecido pela Oracle. Pode encontrá-lo em:

[http://www.oracle.com/technology/products/database/sql_developer/index.html]

  • em [1]: o site de download
  • em [2]: escolha uma versão do Windows sem JRE se este já estiver instalado (como é o caso aqui), uma vez que o [SQL Developer] é uma aplicação Java.
  • [3]: Descompacte o ficheiro descarregado
  • em [4]: execute o ficheiro executável [sqldeveloper.exe]
  • em [5]: Ao iniciar o [SQL Developer] pela primeira vez, especifique o caminho para o JRE instalado no computador
  • em [5b]: crie uma nova ligação
  • em [6]: O SQL Developer permite-lhe ligar-se a vários SGBDs. Selecione Oracle.
  • em [7]: Nome atribuído à ligação que está a criar
  • em [8]: proprietário da ligação
  • em [9]: a sua palavra-passe (jpa)
  • em [10]: mantenha os valores predefinidos
  • em [11]: para testar a ligação (o Oracle deve estar em execução)
  • em [12]: para concluir a configuração da ligação
  • em [13]: os objetos na base de dados jpa
  • em [14]: pode criar tabelas. Tal como nos casos anteriores, iremos criar a tabela [ARTICLES] utilizando o script criado na secção 5.4.6.
  • em [15]: abra um script SQL
  • em [16]: selecione o script SQL criado na secção 5.4.6
  • em [17]: o script a ser executado
  • em [18]: o resultado da execução: a tabela [ARTICLES] foi criada. Clique duas vezes nela para aceder às suas propriedades.
  • em [19]: o conteúdo da tabela.

5.7.5. Driver JDBC do OracleXE

O controlador JDBC do OracleXE está disponível na pasta [jdbc/lib] dentro do diretório de instalação do OracleXE [1]:

Colocamos o arquivo JDBC [ojdbc14.jar] na pasta <jdbc> [2], tal como fizemos anteriormente (secção 5.4.7):

Para testar este controlador JDBC, utilizaremos o Eclipse e o plugin SQL Explorer. Convidamos o leitor a seguir o procedimento explicado na secção 5.4.7. Apresentamos algumas capturas de ecrã relevantes:

  • em [1]: especificámos o arquivo do controlador JDBC do OracleXE
  • em [2]: o controlador JDBC do OracleXE está disponível
  • em [3]: definição da ligação (utilizador, palavra-passe)=(jpa, jpa)
  • em [4]: a ligação está ativa
  • em [5]: a base de dados conectada
  • em [6]: o conteúdo da tabela [ARTICLES]

5.8. O SGBD e o SQL Server Express 2005

5.8.1. Instalação

O SQL Server Express 2005 está disponível em [http://msdn.microsoft.com/vstudio/express/sql/download/]:

  • em [1]: primeiro, descarregue e instale a plataforma .NET 2.0
  • em [2]: em seguida, instale e descarregue o SQL Server Express 2005
  • Passo [3]: Em seguida, instale e descarregue o SQL Server Management Studio Express, que permite administrar o SQL Server

A instalação do SQL Server Express cria uma pasta em [Iniciar / Programas]:

  • em [1]: a aplicação de configuração do SQL Server. Também permite iniciar/parar o servidor
  • em [2]: a aplicação de administração do servidor

5.8.2. Iniciar / Parar o SQL Server

Tal como nos DBMS anteriores, o SQL Server Express foi instalado como um serviço do Windows que arranca automaticamente. Vamos alterar esta configuração:

[Iniciar / Painel de Controlo / Desempenho e Manutenção / Ferramentas Administrativas / Serviços]:

  • em [1]: clicamos duas vezes em [Serviços]
  • em [2]: vemos que existe um serviço chamado [SQL Server], que está em execução [3] e que inicia automaticamente [4].
  • em [5]: outro serviço relacionado com o SQL Server, chamado «SQL Server Browser», também está ativo e configurado para iniciar automaticamente.

Para alterar este comportamento, clique duas vezes no serviço [SQL Server]:

  • em [1]: defina o serviço para início manual
  • em [2]: paramos o serviço
  • em [3]: confirmamos a nova configuração do serviço

Faremos o mesmo com o serviço [SQL Server Browser] (ver [5] acima). Para iniciar e parar manualmente o serviço SQL Server, podemos utilizar a aplicação [1] na pasta [SQL Server]:

  • em [1]: certifique-se de que o protocolo TCP/IP está ativado e, em seguida, aceda às propriedades do protocolo.
  • em [2]: no separador [Endereços IP], opção [IPAll]:
    • o campo [Portas TCP dinâmicas] está em branco
    • a porta de escuta do servidor está definida como 1433 em [Porta TCP]
  • Em [3]: Ao clicar com o botão direito do rato no serviço [SQL Server], obtém-se acesso às opções de iniciar/parar do servidor. Aqui, iniciamo-lo.
  • em [4]: O SQL Server é iniciado

5.8.3. Criação de um utilizador jpa e de uma base de dados jpa

Inicie o SGBD conforme descrito acima e, em seguida, a aplicação de administração [1] através do menu abaixo:

  • em [1]: inicie sessão no SQL Server como administrador do Windows
  • em [2]: configure as propriedades da ligação
  • em [3]: ativamos o modo misto para a ligação ao servidor: quer com um login do Windows (um utilizador do Windows), quer com um login do SQL Server (uma conta definida no SQL Server, independente de qualquer conta do Windows).
  • em [3b]: crie um utilizador do SQL Server
  • em [4]: separador [Geral]
  • em [5]: o nome de utilizador
  • em [6]: a palavra-passe (jpa aqui)
  • em [7]: opção [Funções do servidor]
  • em [8]: o utilizador jpa terá o direito de criar bases de dados

Confirme esta configuração:

  • em [9]: o utilizador jpa foi criado
  • em [10]: sair
  • em [11]: volte a iniciar sessão
  • em [12]: iniciar sessão como utilizador jpa/jpa
  • em [13]: após iniciar sessão, o utilizador jpa cria uma base de dados
  • em [14]: a base de dados será denominada jpa
  • em [15]: e pertencerá ao utilizador jpa
  • em [16]: A base de dados jpa foi criada

5.8.4. Criação da tabela [ARTICLES] na base de dados jpa

Tal como nos exemplos anteriores, iremos criar a tabela [ARTICLES] utilizando o script criado na secção 5.4.6.

  • em [1]: abrimos um script SQL
  • em [2]: Selecione o script SQL criado na secção 5.4.6, página 240.
  • em [3]: inicie sessão novamente (jpa/jpa)
  • em [4]: o script a ser executado
  • em [5]: selecione a base de dados na qual o script será executado
  • em [6]: execute-o
  • em [7]: o resultado da execução: a tabela [ARTICLES] foi criada.
  • em [8]: solicitamos a visualização do seu conteúdo
  • em [9]: o conteúdo da tabela.

5.8.5. Driver JDBC do SQL Server Express

  • em [1]: Uma pesquisa no Google por [Microsoft SQL Server 2005 JDBC Driver] leva-nos à página de download do controlador JDBC. Selecionamos a versão mais recente
  • em [2]: o ficheiro descarregado. Fazemos duplo clique nele. O ficheiro é extraído, criando uma pasta que contém o controlador JDBC [3]
  • em [4]: colocamos o arquivo JDBC [sqljdbc.jar] na pasta <jdbc>, tal como fizemos anteriormente (secção 5.4.7)

Para testar este driver JDBC, utilizaremos o Eclipse e o plugin SQL Explorer. Convidamos o leitor a seguir o procedimento explicado na secção 5.4.7. Apresentamos algumas capturas de ecrã relevantes:

  • em [1]: especificámos o arquivo do controlador JDBC do SQL Server
  • em [2]: o controlador JDBC do SQL Server está disponível
  • em [3]: definição da ligação (utilizador, palavra-passe)=(jpa, jpa)
  • em [4]: a ligação está ativa
  • em [5]: a base de dados conectada
  • em [6]: o conteúdo da tabela [ARTICLES]

5.9. O SGBD HSQLDB

5.9.1. Instalação

O SGBD HSQLDB está disponível no URL [http://sourceforge.net/projects/hsqldb]. Trata-se de um SGBD escrito em Java, muito leve em termos de memória, que gere bases de dados na memória em vez de no disco. O resultado é uma execução de consultas extremamente rápida. Esta é a sua principal vantagem. As bases de dados criadas na memória desta forma podem ser recuperadas quando o servidor é desligado e, posteriormente, reiniciado. Isto deve-se ao facto de os comandos SQL emitidos para criar as bases de dados serem armazenados num ficheiro de registo para serem reproduzidos na próxima vez que o servidor for iniciado. Isto garante a persistência das bases de dados ao longo do tempo.

O método tem as suas limitações, e o HSQLDB não é um SGBD de nível comercial. O seu principal valor reside em aplicações de teste ou demonstração. Por exemplo, o facto de o HSQLDB estar escrito em Java permite que seja incluído em tarefas do Ant (Another Neat Tool), uma ferramenta de automatização de tarefas Java. Assim, os testes diários de código para software em desenvolvimento, automatizados pelo Ant, podem incorporar testes de bases de dados geridos pelo SGBD HSQLDB. O servidor será iniciado, parado e gerido por tarefas Java.

  • em [1]: o site de download
  • em [2]: descarregue a versão mais recente
  • em [3]: descompacte o ficheiro descarregado
  • em [4]: a pasta [hsqldb] resultante da extração
  • em [5]: a pasta [demo] que contém o script para iniciar o servidor [hsql] [6] e, em [7], o script para iniciar uma ferramenta básica de administração do servidor.

5.9.2. Iniciar / Parar o HSQLDB

Para iniciar o servidor HSQLDB, clique duas vezes na aplicação [runManager.bat] [6] acima:

  • em [1]: pode ver que, para parar o servidor, basta premir Ctrl-C na janela.

5.9.3. A base de dados [test]

A base de dados predefinida está localizada na pasta [data]:

  • em [1]: ao iniciar, o SGBD HSQL executa o script denominado [test.script]
1
2
3
4
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10
  • Linha 1: É criado um esquema [public]
  • Linha 2: É criado um utilizador [sa] com uma palavra-passe vazia
  • Linha 3: São concedidos privilégios administrativos ao utilizador [sa]

No final, foi criado um utilizador com privilégios administrativos. Este é o utilizador que iremos utilizar daqui em diante.

5.9.4. Driver JDBC do HSQL

O controlador JDBC para o SGBD HSQL encontra-se na pasta [lib]:

  • em [1]: o arquivo [hsqldb.jar] contém o controlador JDBC do SGBD HSQL
  • em [2]: colocamos este arquivo, tal como os anteriores (secção 5.4.7), na pasta <jdbc>

Para verificar este controlador JDBC, utilizaremos o Eclipse e o plugin SQL Explorer. Convidamos o leitor a seguir o procedimento explicado na secção 5.4.7. Apresentamos algumas capturas de ecrã relevantes:

  • em [1]: [Janela / Preferências / SQL Explorer / Controladores JDBC]
  • em [2]: configurar o servidor [HSQLDB]
  • em [3]: especifique o arquivo [hsqldb.jar] que contém o driver JDBC
  • em [4]: o nome da classe Java do controlador JDBC
  • em [5]: o controlador JDBC está configurado

Depois de fazer isso, ligamo-nos ao servidor HSQL. Primeiro, iniciamos o servidor.

  • em [6]: crie uma nova ligação
  • em [7]: atribua-lhe um nome
  • em [8]: queremos ligar-nos ao servidor HSQLDB
  • em [9]: a URL da base de dados à qual pretende ligar-se. Esta será a base de dados [test] vista anteriormente.
  • em [10]: inicie sessão como utilizador [sa]. Vimos que ele é o administrador do SGBD.
  • em [11]: o utilizador [sa] não tem palavra-passe.

Validamos a configuração da ligação.

  • em [12]: ligamo-nos
  • em [13]: fazemos o login
  • em [14]: está conectado
  • em [15]: o esquema [PUBLIC] ainda não tem uma tabela
  • em [16]: Vamos criar a tabela [ARTICLES] utilizando o script [schema-articles.sql] criado na secção 5.4.6.
  • em [17]: selecione o script
  • em [18]: o script a executar
  • em [19]: executamo-lo após remover todos os comentários, uma vez que o HSQLB não os aceita.
  • Depois de o script ter sido executado, atualize a visualização da base de dados em [20]
  • em [21]: a tabela [ARTICLES] está lá
  • em [22]: o seu conteúdo

Vamos parar e, em seguida, reiniciar o servidor HSQLDB. Depois de feito isso, vamos examinar o ficheiro [test.script]:

1
2
3
4
5
6
7
8
9
CREATE SCHEMA PUBLIC AUTHORIZATION DBA
CREATE MEMORY TABLE ARTICLES(ID INTEGER NOT NULL,NOM VARCHAR(20) NOT NULL,PRIX DOUBLE NOT NULL,STOCKACTUEL INTEGER NOT NULL,STOCKMINIMUM INTEGER NOT NULL,CONSTRAINT PK_ARTICLES PRIMARY KEY(ID),CONSTRAINT CHK_ID CHECK(ARTICLES.ID>0),CONSTRAINT CHK_PRIX CHECK(ARTICLES.PRIX>0),CONSTRAINT CHK_STOCKACTUEL CHECK(ARTICLES.STOCKACTUEL>0),CONSTRAINT CHK_STOCKMINIMUM CHECK(ARTICLES.STOCKMINIMUM>0),CONSTRAINT CHK_NOM CHECK(ARTICLES.NOM!=''),CONSTRAINT UNQ_NOM UNIQUE(NOM))
CREATE USER SA PASSWORD ""
GRANT DBA TO SA
SET WRITE_DELAY 10
SET SCHEMA PUBLIC
INSERT INTO ARTICLES VALUES(1,'article1',100.0E0,10,1)
INSERT INTO ARTICLES VALUES(2,'article2',200.0E0,20,2)
INSERT INTO ARTICLES VALUES(3,'article3',300.0E0,30,3)

Podemos ver que o SGBD armazenou as várias instruções SQL executadas durante a sessão anterior e as reexecuta quando a nova sessão começa. Podemos também ver (linha 2) que a tabela [ARTICLES] é criada na memória (MEMORY). No início de cada sessão, as instruções SQL emitidas são armazenadas em [test.log] para serem copiadas no início da sessão seguinte para [test.script] e reproduzidas no início da sessão.

5.10. O SGBD Apache Derby

5.10.1. Instalação

O SGBD Apache Derby está disponível no URL [http://db.apache.org/derby/]. É um SGBD também escrito em Java e, da mesma forma, muito leve na memória. Oferece vantagens semelhantes às do HSQLDB. Também pode ser incorporado em aplicações Java, ou seja, ser parte integrante da aplicação e ser executado na mesma JVM.

  • em [1]: o site de download
  • em [2,3]: descarregue a versão mais recente
  • em [3]: descompacte o ficheiro descarregado
  • em [4]: a pasta [db-derby-*-bin] resultante da extração
  • em [5]: a pasta [bin] que contém o script para iniciar o servidor [db derby] [6] e, em [7], o script para o parar.

5.10.2. Iniciar / Parar o Apache Derby (DB Derby)

Para iniciar o servidor Db Derby, clique duas vezes na aplicação [startNetworkServer] [6] acima:

  • em [1]: o servidor é iniciado. Será parado utilizando a aplicação [stopNetworkServer] [7] acima.

5.10.3. Driver JDBC do Derby

O controlador JDBC para o SGBD Db Derby encontra-se na pasta [lib] do diretório de instalação:

  • em [1]: o arquivo [derbyclient.jar] contém o controlador JDBC para o SGBD Db Derby
  • em [2]: colocamos este arquivo, tal como os anteriores (secção 5.4.7), na pasta <jdbc>

Para testar este controlador JDBC, utilizaremos o Eclipse e o plugin SQL Explorer. Convidamos o leitor a seguir o procedimento explicado na secção 5.4.7. Apresentamos algumas capturas de ecrã relevantes:

  • em [1]: [Janela / Preferências / SQL Explorer / Controladores JDBC]
  • em [2]: o controlador JDBC do Apache Derby não consta da lista. Adicionamo-lo.
  • em [3]: atribuímos um nome ao novo controlador
  • em [4]: especificamos o formato dos URLs suportados pelo controlador JDBC
  • em [5]: especificamos o ficheiro .jar do controlador JDBC
  • em [5b]: o nome da classe Java do controlador JDBC
  • em [5c]: o controlador JDBC está configurado

Depois de fazer isto, ligue-se ao servidor Apache Derby. Inicie o servidor previamente.

  • em [6]: criar uma nova ligação
  • em [7]: atribuímos-lhe um nome
  • em [8]: queremos ligar-nos ao servidor Apache Derby
  • em [9]: a URL da base de dados à qual queremos ligar-nos. Após o prefixo padrão [jdbc:derby://localhost:1527], especificaremos o caminho para um diretório no disco que contenha uma base de dados Derby. A opção [create=true] permite-nos criar este diretório caso ainda não exista.
  • em [10,11]: ligamo-nos como utilizador [jpa/jpa]. Não aprofundei esta questão, mas parece que se pode usar qualquer nome de utilizador e palavra-passe que se queira. Aqui especificamos o proprietário da base de dados se create=true.

Validamos a configuração da ligação.

  • em [12]: iniciar sessão
  • em [13]: iniciar sessão (jpa/jpa)
  • em [14]: está conectado
  • em [15]: o esquema [jpa] ainda não aparece.
  • em [16]: vamos criar a tabela [ARTICLES] a partir do script [schema-articles.sql] criado na secção 5.4.6.
  • em [17]: selecione o script
  • em [18]: o script a executar
  • em [19]: executamo-lo após remover todos os comentários, uma vez que o Apache Derby, tal como o HSQLB, não os aceita.
  • Assim que o script for executado, atualize a visualização da base de dados em [20]
  • em [21]: o esquema [jpa] e a tabela [ARTICLES] estão lá
  • em [22]: o conteúdo da tabela [ARTICLES]
  • em [23]: o conteúdo da pasta [derby\jpa] onde a base de dados foi criada.

5.11. A estrutura Spring 2

A estrutura Spring 2 está disponível no URL [http://www.springframework.org/download]:

  • em [1]: descarregue a versão mais recente
  • em [2]: descarregue a versão intitulada «com dependências», pois contém os ficheiros .jar das ferramentas de terceiros que o Spring integra e de que necessita sempre.
  • em [3]: descompacte o arquivo baixado
  • em [4]: a pasta de instalação do Spring 2.1
  • em [5]: na pasta <dist>, encontrará os arquivos do Spring. O arquivo [spring.jar] contém todas as classes do framework Spring. Estas também estão disponíveis por módulo na pasta <modules> em [6]. Se souber quais os módulos de que necessita, pode encontrá-los aqui. Desta forma, evita incluir arquivos na aplicação de que esta não necessita.
  • em [7]: a pasta <lib> contém os arquivos de ferramentas de terceiros utilizadas pelo Spring
  • em [8]: alguns arquivos do projeto [jakarta-commons]

Quando o tutorial utiliza arquivos do Spring, deve obtê-los a partir da pasta <dist> ou da pasta <lib> dentro do diretório de instalação do Spring.

5.12. O contentor JBoss EJB3

O contentor JBoss EJB3 está disponível no URL [http://labs.jboss.com/jbossejb3/downloads/embeddableEJB3]:

  • em [1]: Descarregue o JBoss EJB3. Repare na data do produto (setembro de 2006), apesar de o descarregamento estar a ser efetuado em maio de 2007. Poder-se-á questionar se este produto ainda está a ser desenvolvido.
  • em [2]: o ficheiro descarregado
  • em [3]: o ficheiro ZIP descompactado
  • em [4]: os arquivos [hibernate-all.jar, jboss-ejb3-all.jar, thirdparty-all.jar] que compõem o contêiner JBoss EJB3. Eles devem ser colocados no classpath da aplicação que utiliza este contêiner.