java - 在新环境中首次运行 Spring Boot 应用程序时如何运行 data.sql 脚本?

标签 java hibernate spring-boot spring-mvc

众所周知,当我们在新环境中运行应用程序时,hibernate.hbm2ddl.auto=update 配置可以自动生成数据库表,并且 hibernate.hbm2ddl.auto=create在数据库中生成表后可以运行一些脚本,例如类路径中的data.sql文件。

问题来了,我们如何在配置hibernate.hbm2ddl.auto=update下运行data.sql脚本?

或者当我们在新环境中部署应用程序后想要初始化数据库中的一些数据时,是否有其他解决方案?

最佳答案

data.sql是Spring Boot机制,与Hibernate无关。

如果设置spring.datasource.initialization-mode=always,则会执行脚本:

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html

您可以使用一些存储过程代码来初始化 data.sql 中的数据库。

另一种方法可能是监听 ApplicationReadyEvent,然后初始化数据库。

@EventListener(ApplicationReadyEvent.class)
public void doSomethingAfterStartup() {
    // Initalize the database
}

关于java - 在新环境中首次运行 Spring Boot 应用程序时如何运行 data.sql 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55903744/

相关文章:

java - 如何获取方法打印的整数?

java - 确定适当沮丧的最佳方法

java - dom4j 文本函数的 XPath 解析失败

java - Spring Boot + Flyway + AWS : Caused by: java. sql.SQLException:找不到合适的驱动程序

java - 在 Spring Boot 上发布 DTO 对象后的模型属性

spring-boot - 从方法调用时@Retryable 不起作用

java - 从 application.properties 读取并替换动态参数

java - Hibernate - 查询为实体中的所有字段返回空值,而同一查询从数据库中完美返回

java - 如何使用 criteria api 查询具有相同结构的两个 SQL 表?

java - 如何强制 Spring 使用事务执行读查询