paw*_*que 3 persistence export hsqldb
是否可以以某种方式设置HSQLDB,以便将具有db信息的文件写入内存而不是使用实际文件?我想使用hsqldb将一些数据结构与hibernate映射一起导出.但是,不可能编写临时文件,因此我需要在内存中生成文件并返回一个包含其内容的流作为响应.
将hsqldb设置为使用nio似乎不是一个解决方案,因为在将这些文件写入文件系统之前无法获取这些文件.
我在想的是hsqldb的协议处理程序,但我还没有找到合适的解决方案.
换句话说就是:黑客解决方案是将hsqldb传递给一个流或几个流.然后它将在其操作期间将数据写入这些流.在写入所有数据之后,db的用户可以使用这些流通过网络将其发回.
是的,当然,我们一直使用它进行集成测试.
用作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.