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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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