HSQLDB和内存中的文件

时间:2010-06-08 23:32:41

标签: persistence export hsqldb

是否可以以某种方式设置HSQLDB,以便将包含db信息的文件写入内存而不是使用实际文件?我想使用hsqldb将一些数据结构与hibernate映射一起导出。但是,不可能编写临时文件,因此我需要在内存中生成文件并返回一个包含其内容的流作为响应。

将hsqldb设置为使用nio似乎不是一个解决方案,因为在将这些文件写入文件系统之前无法获取这些文件。

我在想的是hsqldb的协议处理程序,但我还没有找到合适的解决方案。

换句话说,一个黑客解决方案是将hsqldb传递给一个流或几个流。然后它将在其操作期间将数据写入这些流。在写完所有数据之后,db的用户可以使用这些流通过网络将其发回。

1 个答案:

答案 0 :(得分:6)

是的,当然,我们一直使用它进行集成测试。

用作url:jdbc:hsqldb:mem:aname

请参阅here for more details

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"));

有关详细信息,请参阅DbUnit FAQ。当然还有恢复数据的例程,因为这实际上是包的目的:为集成测试准备一个测试数据库。通常我们使用注释来执行此操作,但您必须使用tha API。