java - Spring Boot 通过 Derby 启用特定嵌入式数据库 HSQL

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

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

最佳答案

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

If HSQLDB is on your classpath, and you have not manually configured any database connection beans, then we will auto-configure an in-memory database.

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

  1. connection type for Hibernate (JPA) :

An embedded database is detected by looking at the Connection type: hsqldb, h2 and derby are embedded, the rest are not.

  • HSQL 明确作为主要数据源:

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

  • 关于java - Spring Boot 通过 Derby 启用特定嵌入式数据库 HSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34567082/

    相关文章:

    java - Spring Kafka - 防止消费者在 Spring Boot 构建期间连接 Kafka 主题

    java - 如何根据父子关系获取项目中嵌套(层次结构)的所有项目的列表?

    java - 如何在 Spring Batch 中覆盖 spring 框架版本?

    java - Spring Java 配置中的别名定义

    java - Flyway Migrate 负载约束违反 Spring

    java - 如何将Spring Boot应用程序部署到AWS Elastic Beanstalk?

    java - 在gradle中导入Apache速度会降级HttpServletResponse

    Java MulticastSocket 发送但不接收

    java - 为什么 HashMap 中更高的负载因子会减少空间开销

    java - 这两个 Java 代码哪个更快?