我们知道hibernate.hbm2ddl.auto=update
的配置可以在新环境中运行应用程序时自动生成数据库表,而hibernate.hbm2ddl.auto=create
可以在数据库中生成表后在classpath中运行某些脚本,例如data.sql文件
问题来了,我们如何才能在配置hibernate.hbm2ddl.auto=update
下运行data.sql脚本?
或者在新环境中部署应用程序后想要在数据库中初始化一些数据时还有其他解决方案吗?
答案 0 :(得分:0)
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
}