如何在不依赖数据库的情况下使用 Hibernate 5 (JPA) 启动 Spring Boot Application 2?

Posted

技术标签:

【中文标题】如何在不依赖数据库的情况下使用 Hibernate 5 (JPA) 启动 Spring Boot Application 2?【英文标题】:How to start Spring Boot Application 2 with Hibernate 5 (JPA) without depending on Database? 【发布时间】:2019-07-22 11:40:17 【问题描述】:

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

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

是否仍然可以在不依赖数据库的情况下启动它?以下是(已编辑)Hibernate 5-属性 (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(连同数据源);如果创建失败,应用程序将无法启动。就是这样。

【问题讨论】:

不。它与 ODBC-JDBC 桥无关。它是关于实体管理器工厂 Bean。如果创建失败,应用程序也会失败。 正如其他用户所说,我不需要使用任何数据库,即使是 H2 【参考方案1】:

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

我将这两行添加到application.properties

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

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

【讨论】:

以上是关于如何在不依赖数据库的情况下使用 Hibernate 5 (JPA) 启动 Spring Boot Application 2?的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate Validator 在不使用 Spring Framework 的情况下检索错误消息

在不使用 hibernate.hbm2ddl.auto 的情况下,如何将所有初始模式导出到 Flyway?

如何在不修改生产代码的情况下打破依赖关系?

如何在不安装的情况下列出python库的依赖项? [复制]

视图如何在不使用依赖于框架的 intrinsicContentSize 的情况下根据其宽度的函数确定其高度?

如何在不安装的情况下修改 package.json 依赖项