HSQLDB и файлы в памяти - PullRequest
3 голосов
/ 09 июня 2010

Можно ли настроить HSQLDB таким образом, чтобы файлы с информацией о БД записывались в память вместо использования реальных файлов? Я хочу использовать hsqldb для экспорта некоторых структур данных вместе с отображениями гибернации. Однако невозможно записать временные файлы, поэтому мне нужно сгенерировать файлы в памяти и вернуть поток с их содержимым в качестве ответа.

Настройка hsqldb на использование nio, по-видимому, не является решением, поскольку невозможно получить эти файлы до того, как они будут записаны в файловую систему.

Я имею в виду обработчик протокола для hsqldb, но я не нашел подходящего решения.

Просто, чтобы описать другими словами: решение взлома состоит в том, чтобы передать hsqldb поток или несколько потоков. Затем он во время своей работы записывает данные в эти потоки. После записи всех данных пользователь базы данных может использовать эти потоки для отправки их обратно по сети.

1 Ответ

6 голосов
/ 09 июня 2010

Да, конечно, мы все время используем его для интеграционного тестирования.

использовать как URL: jdbc: hsqldb: mem: aname

см. здесь для более подробной информации

DbUnit предлагает удобный метод дампа базы данных как часть своего пакета:

    // database connection
    Class driverClass = Class.forName("org.hsqldb.jdbcDriver");
    Connection jdbcConnection = DriverManager.getConnection(
            "jdbc:hsqldb:sample", "sa", "");
    IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

    // full database export
    IDataSet fullDataSet = connection.createDataSet();
    FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));

см. FAQ по DbUnit для более подробной информации. Конечно, существуют процедуры для восстановления данных, так как это на самом деле цель пакета: подготовить тестовую базу данных для интеграционного тестирования. Обычно мы делаем это с аннотацией, но для этого вам придется использовать API.

...