如何在Spring启动时加载sql函数?

mem*_*und 3 postgresql spring hibernate spring-boot

我正在使用Spring-Boot我的应用程序hibernate.hbm2ddl.=update.

如何确保在启动时执行sql脚本?因此,我想确保FUNCTION .. LANGUAGE plpgsql在我的postgresql数据库中存在.

kaz*_*eel 6

通过使用XML.

<jdbc:initialize-database data-source="dataSource">
  <jdbc:script location="classpath:com/foo/sql/db-schema.sql"/>
  <jdbc:script location="classpath:com/foo/sql/db-test-data.sql"/>
</jdbc:initialize-database>
Run Code Online (Sandbox Code Playgroud)

通过使用注释(以下示例应该放在您的@Configuration类中)

@Value("classpath:com/foo/sql/db-schema.sql")
private Resource schemaScript;

@Value("classpath:com/foo/sql/db-test-data.sql")
private Resource dataScript;

@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSource);
    initializer.setDatabasePopulator(databasePopulator());
    return initializer;
}

private DatabasePopulator databasePopulator() {
    final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
    populator.addScript(schemaScript);
    populator.addScript(dataScript);
    return populator;
}
Run Code Online (Sandbox Code Playgroud)

  • 好吧,你可以,但Spring Boot默认已经检查了`schema.sql`和`data.sql`的存在,如果可用的话执行那些.那么为什么只要包含一个文件就可以自己动手做. (8认同)