Utilizando HSQLDB em suas aplicações

O HSQLDB ou HyperSQL é um gerenciador de base de dados relacional open source escrito inteiramente em Java. É simples, possui poucos recursos, mas é bastante eficiente. Esse gerenciador é utilizado no OpenOffice, ocupa pouco espaço em disco e pode ser embutido em uma aplicação Java sem a necessidade de instalação. É recomendado para aplicações desktop que não compartilham servidores de banco de dados, para demonstrações, testes unitários ou em situações em que o uso de um banco simples e pequeno se faz necessário.

Para instalar, basta acessar o site: http://sourceforge.net/projects/hsqldb/files/, fazer o download do arquivo e descompactá-lo em uma pasta. Para executar a ferramenta de acesso à base de dados, é só acessar a pasta lib do projeto e executar o seguinte comando:

java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing

Irá abrir um gerenciador gráfico simples.

HSQL Database Manager
HSQL Database Manager

Existem três tipos de bancos associados ao HSQLDB:

  • mem: dados inteiramente em memória. Terminou a aplicação os dados são perdidos.
  • file: armazenados em arquivos
  • res: armazenados em recursos dentro de um JAR, por exemplo. São somente leitura.

O nome do driver é org.hsqldb.jdbc.JDBCDriver, o usuário padrão é SA, sem senha e a string de conexão depende do tipo de banco a ser criado. A URL de conexão para bancos em memória e do tipo: jdbc:hsqldb:mem:nomeDoSeuBanco. Para bancos em arquivos você pode utilizar caminho relativo da aplicação: jdbc:hsqldb:file:nomeDoSeuBanco. Desssa forma o diretório com os arquivos ficará localizado a partir do caminho que você executou a aplicação. Para caminhos absolutos pode-se utilizar a seguinte URL, por exemplo: jdbc:hsqldb:file:/home/thiago/bancoTeste, onde /home/thiago/bancoTeste é a localização do seu banco de dados. O mais interessante é que essa URL é independente de sistema operacional, no windows por exemplo, esse banco estaria localizado na pasta C:\home\thiago\bancoTeste\. Para a opção de recursos dentro de JARs, a URL de conexão é: jdbc:hsqldb:res:org.seu.pacote.nomeDoSeuBanco. Nessa opção o banco é de somente leitura.

Existe também a opção de rodar o HSQLDB como um servidor. Para subir o servidor é necessário executar o seguinte comando a partir da pasta lib do HSQLDB:

java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:nomeArquivoDoSeuBanco --dbname.0 nomeDoSeuBanco

Nesse caso a string de conexão é: jdbc:hsqldb:hsql://localhost/nomeDoSeuBanco.

Abaixo temos o exemplo de uma conexão JDBC com o HSQLDB:

  try {
      Class.forName("org.hsqldb.jdbc.JDBCDriver" );
  } catch (Exception e) {
      System.err.println("ERRO: falha ao carregar o driver JDBC do HSQLDB!");
      e.printStackTrace();
      return;
  }

  Connection c = DriverManager.getConnection("jdbc:hsqldb:file:nomeDoSeuBanco", "SA", "");

Para utilizar o HSQL com JPA é só especificar a a URL de conexão e, caso seja Hibernate, utilizar o dialeto: org.hibernate.dialect.HSQLDialect. E lembre-se de adicionar o hsqldb.jar no classpath da sua aplicação.

Sobre: Thiago Galbiatti Vespa

Thiago Galbiatti Vespa é mestre em Ciências da Computação e Matemática Computacional pela USP e bacharel em Ciências da Computação pela UNESP. Coordenador de projetos do JavaNoroeste, membro do JCP (Java Community Process), consultor Oracle, arquiteto de software de empresas de médio e grande porte, palestrante de vários eventos e colaborador de projetos open source. Possui as certificações: Oracle Certified Master, Java EE 5 Enterprise Architect – Step 1, 2 and 3; Oracle WebCenter Portal 11g Certified Implementation Specialist; Oracle Service Oriented Architecture Infrastructure Implementation Certified Expert; Oracle Certified Professional, Java EE 5 Web Services Developer; Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer; Oracle Certified Professional, Java Programmer; Oracle Certified Associate, Java SE 5/SE 6