首页 > 解决方案 > 如何在不依赖数据库的情况下使用 Hibernate 5 (JPA) 启动 Spring Boot Application 2?

问题描述

首先:这不是一个重复的问题。

4.5 多年前,另一位用户(在 Stackoverflow.com 上)写道,他有一个要求,即即使数据库关闭,他的 Spring Boot 应用程序也应该能够启动。他将 Spring Boot Application 1 与 Hibernate 4 一起使用。我现在对 Spring Boot Application 2 与 Hibernate 5 有同样的问题。我尝试将选中的答案应用于 Hibernate 4,但这不适用于我的应用程序。

是否仍然可以在不依赖数据库的情况下启动它?这是(编辑的)Hibernate 5 -properties(application.yml):

spring:
  datasource:
    url: jdbc:mysql://localhost/schema?serverTimezone=UTC
    username: root
    password: root
    continue-on-error: true
    initialization-mode: never
    tomcat:
      initial-size: 0
      time-between-eviction-runs-millis: 5000
      min-evictable-idle-time-millis: 5000
      min-idle: 0
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: none
    properties:
      hibernate:   
        dialect: org.hibernate.dialect.MySQL5Dialect
        hbm2ddl:
          auto: none
        temp:
          use_jdbc_metadata_defaults: false

我的问题已被标记为“可能重复”。提供的可能答案根本不是可能的答案。正如我所写,我被要求(这是一项要求)不要使用任何其他数据库,即使是 H2。所以,问题出在 EntityManagerFactory Bean(连同数据源);如果创建失败,应用程序将无法启动。而已。

标签: mysqlspringspring-bootjpahibernate-5.x

解决方案


我知道这个问题已经很老了,但我以这种方式解决了这个问题(对于与 Hikari 一起工作的人)。

我将这两行添加到application.properties

spring.datasource.hikari.initialization-fail-timeout=-1
spring.datasource.hikari.connection-timeout=0

那么第一行对我来说很明显,有 Hikari 的文档(https://github.com/brettwooldridge/HikariCP)。写到第二行允许的值在 250-* 之间。但是我使用了零值,它开始按我的预期工作。


推荐阅读