spring - 如何从 Spring Boot 应用程序以服务器模式启动 HSQLDB

标签 spring jdbc hsqldb

我有一个 Spring boot 应用程序,使用 jpa 数据和 hsqldb 2.3.3(在 Centos 7 中)运行,该应用程序运行良好,但我想使用 HSQLDB 数据库管理器来检查数据状态,但是它失败了:

应用程序属性:

spring.datasource.url=jdbc:hsqldb:mem:testdb
spring.datasource.username=sa
spring.datasource.password=

spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create

启动 HSQLDB 的命令:
java -cp /home/mycentos/.m2/repository/org/hsqldb/hsqldb/2.3.3/hsqldb-2.3.3.jar org.hsqldb.util.DatabaseManagerSwing

如果我尝试使用 HSQLDB 服务器模式登录,它会弹出 Connection refused错误
jdbc:hsqldb:hsql://localhost/testdb

如果我尝试登录内存数据库,我可以登录但没有显示表和数据
jdbc:hsqldb:hsql:testdb

题:
  • 如何使它起作用?
  • 我是否必须从 tomcat 部署文件夹中引用 hsqldb.jar,因为这是应用程序使用的那个?
  • 从 Spring 应用程序在服务器模式或内存模式下配置 hsqldb 有什么配置差异吗?
  • 任何方法都可以使内存模式在这种情况下工作(通过数据库创建的 Spring boot 检查数据)?
  • 最佳答案

    要访问 Spring Boot 应用程序创建的 HSQL DB,您必须启动 HSQL 服务器。例如,创建一个 XML 配置文件 hsql_cfg.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="hqlServer" class="org.hsqldb.server.Server" init-method="start" destroy-method="stop">
        <property name="properties"><bean class="org.hsqldb.persist.HsqlProperties">
            <constructor-arg><props>
            <prop key="server.database.0">mem:testdb</prop>
            <prop key="server.dbname.0">testdb</prop><!--DB name for network connection-->
            <prop key="server.no_system_exit">true</prop>
            <prop key="server.port">9001</prop><!--default port is 9001 -->
            </props></constructor-arg>
        </bean></property>
    </bean>
    </beans>
    

    这是在主应用程序类中导入 XML 配置的示例。
    @SpringBootApplication
    @ImportResource(value="classpath:/package/hsql_cfg.xml")
    public class MyApplication {
    }
    

    HSQL 服务器将以 Spring 启动应用程序启动。其他应用程序可以使用 JDBC url 连接到 HSQL 服务器

    jdbc:hsqldb:hsql://ip_address:port/testdb



    当然,hsqldb.jar加载 JDBC 驱动程序类是必需的。

    关于spring - 如何从 Spring Boot 应用程序以服务器模式启动 HSQLDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40114231/

    相关文章:

    spring - 为多部分/表单数据添加JSON消息转换器

    java - Spring Boot JdbcTemplate 过滤机制

    java - 如何 Autowiring @bean类

    java - 使用 native SQL 创建表适用于 Hibernate/HSQLDB,插入失败。为什么?

    java - 如何使 HSQL 驱动程序工作?

    java - Spring+MyBatis异常: Mapped Statements collection does not contain value for

    java - 使用集合对象构建结果集

    mysql - 从一个表中选择另一个表中不存在的记录

    java - 如何保持 jdbc 到 postgres 的存活

    mysql - 根据另一个表中的条件计算表中的行数