http://www.cesur.br
Introduo
O Hypersonic SQL Database (HSQLDB) um projeto de banco de dados livre, escrito em Java, que permite a manipulao de banco de dados em uma arquitetura cliente-servidor, ou standalone. Uma grande vantagem de utilizao do HSQLDB a possibilidade de agregarmos o banco de dados ao pacote de nossas aplicaes. O banco multiplataforma e ocupa um pequeno espao em disco. Outra caracterstica do banco a possibilidade de manipularmos bancos de dados em disco, memria ou em formato texto. Trata-se de uma tecnologia flexvel e muito til na construo de aplicaes que manipulem banco de dados. Nesse artigo, iremos ilustrar as principais caractersticas do banco de dados, destacando-se o conjunto de ferramentas constantes no pacote de distribuio. Trata-se de um banco de dados excelente para pequenas aplicaes escritas em Java.
Pgina do projeto:
HSQLDB project: http://hsqldb.sf.net
Componentes do HSQLDB
No ncleo do pacote esto o RDBMS e o driver JDBC que disponibilizam as principais funcionalidades do banco, que so: o gerenciador de banco de dados relacional e o driver para conexo atravs de aplicaes Java. Alm disso, o pacote contm um conjunto de componentes e ferramentas para execuo do SGBD. Atravs das ferramentas podemos criar estruturas de um banco de dados, acessar bancos de dados atravs de ferramentas para consulta, exportar e importar esquemas entre bancos de dados distintos. Alm de outras facilidades disponibilizadas para o desenvolvedor. A seguir, veremos a descrio de cada um desses componentes: HSQLDB JDBC Driver: o pacote de distribuio disponibiliza um driver padro JDBC para conexo de aplicaes Java com o SGBD. A conexo com o banco de dados segue um modelo de protocolo proprietrio, mas tambm podemos realizar uma conexo via rede, atravs de protocolos Internet. Nesse artigo, veremos como realizar uma conexo de uma aplicao Java com o banco de dados de diversas formas. Database Manager: duas verses de ferramentas para gerenciamento de banco de dados so disponibilizadas. Uma ferramenta escrita usando AWT e uma outra verso usando Swing. Trata-se de uma ferramenta grfica para visualizao do esquema do banco de dados, conjunto de tabelas e submisso de instrues SQL. A verso AWT pode ser executada como um Applet dentro de um navegador. Transfer Tool: essa uma ferramenta utilizada para transferncias de esquemas SQL ou dados de uma fonte JDBC para outra. Trata-se de uma ferramenta bastante til quando desejamos realizar uma migrao de banco de dados, transferindo esquemas e o conjunto de dados entre duas tecnologias distintas. Query Tool:a finalidade dessa ferramenta prover ao desenvolvedor um software para interao com o SGBD atravs do envio de instrues SQL a partir de uma linha de comando, ou atravs de um arquivo texto contendo um conjunto de instrues. A ferramenta apresenta um shell interativo ao usurio. SQL Tool: outra ferramenta do pacote para construo e submisso de instrues SQL ao banco de dados.
HSQLDB RDBMS
Este o mdulo gerenciador do banco de dados relacional disponibilizado pela ferramenta. O HSQLDB pode ser executado de diversas maneiras. Podemos execut-lo como um servidor de banco de dados, ou como um processo em aplicaes standalone. Para cada modo de execuo temos uma forma especfica de conexo com o banco de dados. A forma de conexo dada por um protocolo informado na string que forma a URL de conexo com o banco.
O arquivo hsqldb.jar dever estar gravado em um diretrio mapeado atravs da varivel de ambiente classpath, para que a linha de comando acima tenha efeito. O primeiro argumento -database.0 informa o nome do banco de dados. Enquanto que o segundo argumento, o -dbname.0, informa um alias para o banco de dados. Caso o servidor seja carregado sem informarmos algum banco de dados, o mesmo gera um banco de dados padro denominado test.
Conectando uma aplicao a um servidor Aplicaes clientes realizam uma conexo a um servidor em execuo via JDBC. Para isso, a aplicao dever utilizar o driver disponvel no prprio hsqldb.jar. A seguir, veremos um exemplo de conexo.
try{ Class.forName(org.hsqldb.jdbcDriver); } catch(SQLException e){ System.out.println(Erro ao carregar o driver JDBC. ); } Connection con = DriverManager.getConnection(jdbc:hsqldb:hsql:/localhost/DBEmpresa, sa, );
A conexo do exemplo acima utiliza a porta 9001, que a porta padro para conectar a aplicao Java, via JDBC, com o banco de dados DBEmpresa. O usurio padro do HSQLDB o sa, cuja senha uma string vazia. Conectando uma aplicao no modo standalone Neste caso, o banco de dados far parte da prpria aplicao. Ou seja, ambos sero empacotados juntos e ambos rodaro em uma mesma JVM. Para pequenas aplicaes que sero executadas em um desktop, sem o uso da rede, um conceito muito interessante. Veja, logo abaixo, um exemplo de como realizar uma conexo com um banco de dados standalone:
Connection con = DriverManager.getConnection(jdbc:hsqldb:file:/banco/DBEmpresa, sa, );
computador, permitindo uma melhor performance do SGBD. Esse modo de execuo dever ser utilizado somente em algumas situaes especiais. A seguir, veremos o exemplo de conexo utlizando o protocolo de memria.
Connection con = DriverManager.getConnection(jdbc:hsqldb:mem:empresa, sa, );
definidas em outros banco de dados. Trata-se e um modelo de intercmbio de informaes entre tecnologias de banco de dados.
ou
java org.hsqldb.util.DatabaseManagerSwing
Note que o aplicativo est dentro do pacote til e duas verses so disponiblizadas: uma verso utilizando uma interface baseada no conjunto de componentes grficos do pacote AWT; e uma verso que utiliza componentes Swing. A figura 1 apresenta a interface de conexo da ferramenta com um banco de dados. A verso Swing foi utilizada para exemplificao.
Figura 1. Interface de conexo do Database Manager. Na interface de conexo o usurio dever informar o tipo de mecanismo de conexo: servidor, memria, standalone, ou outro; o driver de conexo, a URL, o usurio e a senha do mesmo. A prxima figura, apresenta a interface principal da ferramenta. O Database Manager apresenta uma interface dividida em trs reas de informaes. A primeira rea, disponibilizada esquerda da interface, apresenta uma estrutura hierrquica onde a estrutura do banco de dados poder ser visualizada. Na estrutura o desenvolvedor poder verificar as caractersticas de tabelas, campos, ndices e restries do banco. Alm de outras propriedades do SGBD. Uma rea de edio de instrues SQL apresentada para o usurio, ao lado da rea de propriedades do banco. Nessa rea o desenvolvedor ir escrever e submeter comandos SQL para manuteno de dados e definio do esquema do banco. Os botes apresentados abaixo do menu principal da ferramenta permitem que o usurio limpe a rea de edio para escrita de novos comandos, ou submeta um determinado comando ao SGBD. Os resultados dos comandos de interao do usurio so apresentados em uma rea abaixo da caixa de submisso de instrues SQL. Outras funcionalidades podem ser exploradas atravs do menu principal da ferramenta. Vejamos algumas funes presentes no menu principal. File: possui opes para abertura de scripts SQL gravados em arquivos texto, gravaes de um conjunto de instrues em um arquivo em disco, salvar o resultado de uma consulta em disco e realizao de conexes. View: disponibiliza algumas opes para configurao da forma de apresentao de resultados, assim como, atualizao da estrutura hierrquica que apresenta o esquema e propriedades de um banco de dados. Command: essa opo de menu apresenta um conjunto de instrues SQL para auxlio ao usurio. Ao selecionar uma determinada instruo disponvel no menu, o template j ser apresentado ao usurio na caixa de comandos.
Recent: guarda uma lista das ltimas instrues SQL submetidas pelo usurio atravs da caixa de comandos. Options: mantm um conjunto de opes como controle de transaes, ajuste de autocommit, login e logoff do banco, etc. Tools: permite que o desenvolvedor possa acessar outras ferramentas a partir do Database Manager, tais como: ferramenta para exportao do esquema do banco, restaurao de um esquema exportado e ferramenta para transferncia de informaes.
Consideraes finais
O RDBMS HSQLDB uma ferramenta muito flexvel para manipulao de banco de dados. Trata-se de uma excelente ferramenta para quem trabalha com Java e para construo de pequenas aplicaes standalone. Em disciplinas voltadas a rea de desenvolvimento de software um grande achado, pois o software cabe em um disquete, tornando-se muito prtico. Para quem trabalha com educao, trata-se de uma excelente opo para o ensino de conectividade de banco de dados com JDBC.
Carlos Emilio Padilla Severo (emilio.severo@gmail.com) professor universitrio, trabalha na FACSUL-CESUR lecionando disciplinas de desenvolvimento de software e coordenando o ncleo de tecnologia da informao da instituio.