java - 将嵌入式 HSQL 数据库保存到文件

标签 java spring hibernate hsqldb

出于日志记录和调试目的,我想将嵌入式/内存中的 HSQL 数据库转储到文件中。模式+数据。我正在使用 spring-framework 和 hibernate。

我都试过了:

    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();

    session.createSQLQuery("BACKUP DATABASE TO '/tmp/backup.tar.gz' BLOCKING");

    transaction.commit();
    session.close();

    Session session = sessionFactory.openSession();
    Transaction transaction = session.beginTransaction();

    session.createSQLQuery("SCRIPT '/tmp/backup-data.sql'");

    transaction.commit();
    session.close();

两者都无济于事。

没有特殊配置。

hibernate 配置:

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="classpath:spring/batch/database/schema.sql"/>
</jdbc:embedded-database>

<bean id="sessionFactory"
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
      p:dataSource-ref="dataSource">
    <property name="packagesToScan" value="com.domain.*.model"/>
    <property name="hibernateProperties">
        <value>
            hibernate.format_sql=true
            hibernate.dialect=org.hibernate.dialect.HSQLDialect
        </value>
    </property>
</bean>

我错过了什么,我需要一种不同的方法吗?有可能吗?

最佳答案

您的代码只是创建一个 SQLQuery 的实例并将其丢弃。您没有执行查询。

添加/更改以下内容

SQLQuery query = session.createSQLQuery("BACKUP DATABASE TO '/tmp/backup.tar.gz' BLOCKING");
query.executeUpdate();

这将执行查询。

关于java - 将嵌入式 HSQL 数据库保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213688/

相关文章:

java - 分析不同分支的 Maven 依赖关系

java - 基于 IBM MQ 的 Web 服务

java - Spring-security 与 spring-4.3.0-release 的兼容版本是什么?

java - Spring 3.0 MVC错误: Neither BindingResult nor plain target object for bean name 'login' available as request attribute

java - SOAP Java Axis 错误 : MustUnderstand not understood

java - 为什么@Table注解在spring的CRUD操作中是可选的

spring - 在不使用 Node.js 的 Spring Web 应用程序中使用 Angular2

java - 使用 JASYPT + Hibernate + Spring 进行字符串加密

hibernate - 在非主键 UUID 类型字段上使用 findBy* 方法会导致异常

hibernate ,如何按条件计数