HSQLDB和内存中的文件

paw*_*que 3 persistence export hsqldb

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

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

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

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

Pet*_*ans 6

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

用作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"));
Run Code Online (Sandbox Code Playgroud)

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