Friday, December 07, 2012

Conexão para HSQLDB embutido aplicações desktop (jar)

O HSQLDB é uma ótima opção para projetos demonstração e POCs (prova de conceitos). Na YaW nós desenvolvimento algumas aplicações seguindo o modelo client server (Desktop), utilizando o HSQLDB como banco de dados. Em algumas dessas apps o HSQLDB é distribuído junto com as classes Java,  embutido no arquivo JAR.

O detalhe dessa estratégia é utilizar a protocolo res para criar a conexão com HSQLDB. Com ele os arquivos do banco de dados são carregados como recursos da aplicação da mesma forma que classes Java.

public static Connection openConnection() {
  Connection conn = null;
  try {
    Class.forName("org.hsqldb.jdbcDriver");

    String bd = "meuDB";
    //url da conexao
    String url = "jdbc:hsqldb:file:/"+db;
    String user = "sa";
    String password = "";

    conn = DriverManager.getConnection(url, user, password);
    return conn;
  } catch (ClassNotFoundException e) {
    String errorMsg = "Driver nao encontrado";
    throw new RuntimeException(errorMsg, e);
  } catch (SQLException e) {
    String errorMsg = "Erro ao obter a conexao";
    throw new RuntimeException(errorMsg, e);
  }
}


Os arquivos para o meuDB, devem ser armazenados no diretório META-INF do jar (pelo menos meuDB.log, meuDB.properties, meuDB.script).

Uma caracteristica muito importante desse protocolo, é que a conexão será criada como somente leitura (read-only). As manipulações (insert/update/delete) ocorrem somente em memória.

Outra referencia é o tópico sobre protocolos de conexão na documentação do HSQLDB.

@edermag

No comments: