【问题标题】:Spring Boot Enable Specific Embedded Database HSQL over DerbySpring Boot 通过 Derby 启用特定的嵌入式数据库 HSQL
【发布时间】:2016-04-06 15:28:46
【问题描述】:

我正在尝试在 weblogic 服务器上部署我的应用程序,我的应用程序有一个内存数据库,并且由于我使用 HSQLDB for JUNIT,我想保留 HSQL 作为我的内存数据库(主要是比 derby 稍微好一点的性能)。由于 weblogic 已经有 derby,所以当我尝试部署应用程序时,derby 正在启动而不是 HSQL。在初步调查中,我发现由于 Derby 是在 EmbeddedDatabaseConnection.java 中的 HSQL 之上定义的,因此首先启动了 Derby 数据库。是否有任何特定配置,我可以将数据库类型显式嵌入到 HSQL,而不是允许 spring boot 基于库/类启动数据库

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa hsqldb


    【解决方案1】:

    我能想到的第一个尝试是从类路径中删除 Derby 并只保留 HSQL。 Spring Boot docs

    如果 HSQLDB 在您的类路径中,并且您尚未手动配置 任何数据库连接bean,然后我们将自动配置一个 内存数据库。

    如果这不是一个选项,您可以指定

    1. connection type for Hibernate (JPA):

    通过查看连接类型来检测嵌入式数据库:hsqldb、h2 和 derby 是嵌入式的,其余的不是。

    1. HSQL 明确作为主要数据源:

      @Configuration
      public class DataSourceConfig {
          @Bean
          public DataSource dataSource() {
              return new EmbeddedDatabaseBuilder()
                 .setType(EmbeddedDatabaseType.HSQL)
                 .build();
          }
      }
      
    2. 定义spring.datasource.type属性

    【讨论】:

    • 是的,我确实使用了 2 选项作为解决方法,但是,我更喜欢 3 选项,它不起作用,没有考虑 spring.datasource.type
    • 我接受答案,就像在 spring-boot 中一样,如果你不喜欢创建 bean 来覆盖这是第二个选项。
    猜你喜欢
    • 1970-01-01
    • 2020-09-18
    • 2017-08-31
    • 1970-01-01
    • 2018-06-13
    • 2015-10-19
    • 2015-10-08
    • 2019-09-04
    • 2018-02-26
    相关资源
    最近更新 更多