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:
[cc lang="bash"]java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing[/cc]
Irá abrir um gerenciador gráfico simples.
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:
[cc lang="bash"]java -cp hsqldb.jar org.hsqldb.server.Server --database.0 file:nomeArquivoDoSeuBanco --dbname.0 nomeDoSeuBanco[/cc]
Nesse caso a string de conexão é: jdbc:hsqldb:hsql://localhost/nomeDoSeuBanco.
Abaixo temos o exemplo de uma conexão JDBC com o HSQLDB:
[cc lang="java"]
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", "");
[/cc]
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.
[...] This post was mentioned on Twitter by open4education, Thiago G. Vespa. Thiago G. Vespa said: Novo post: Utilizando HSQLDB em suas aplicações http://j.mp/dxFPg7 [...]
Estrou fazendo um trabalho na faculdade sobre o HSQLDB, procurando sobre ele encontrei o seu blog... gostaria de saber se você poderia me responder essas questões sobre ele:
- Quais são as principais limitações ou pontos negativos ?
- Citar uma aplicação comercial que utiliza o HSQLDB.
Obrigado.
Um exemplo de uso do governo: O Ministério da Saúde (DATASUS) utiliza em algumas de suas aplicações o HSQL, uma delas é a aplicação chamada SISRCA.
Gostaria de saber se ao invés de usar o SQLite no android eu poderia usar o HSQLDB ?
Só se existir um port do hsqldb para android. No momento não sei lhe informar se já existe ou não.
Alguem ja usou o HSQLDB no Android ?
Olá thiago. Estou com dúvida sobre o sql na sintaxe. Como posso criar uma tabela persistente com chave primaria e chave estrangeira. E colocar no sql que a chave primaria e estrangeira vão ser digitados os valores pelo usuário. POde me colocar um sql de exemplo? Agradeço!
Thiago, blz ?
Como eu faço para trabalhar com essa banco de dados em um servidor Web, como o Tomcat ou o Glassfish.
Como eu crio o meu banco de dados, para distribuir junto com a minha aplicação Web ?
É só você colocar o jar no classpath da aplicação e por ser JDBC é só utilizar da mesma maneira que qualquer outro banco de dados