如何在不依赖数据库的情况下使用 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?