更新时间:2023-12-05 16:40:52
p $ p> < 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>
使用注解(以下示例应置于 @Configuration
class)
@Value(classpath:com / foo / sql / db-schema.sql)
私有资源schemaScript;
@Value(classpath:com / foo / sql / db-test-data.sql)
私有资源dataScript;
@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource){
final DataSourceInitializer initializer = new DataSourceInitializer();
initializer.setDataSource(dataSource);
initializer.setDatabasePopulator(databasePopulator());
返回初始值设定项;
private DatabasePopulator databasePopulator(){
final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
populator.addScript(schemaScript);
populator.addScript(dataScript);
return populator;
}
I'm using Spring-Boot
for my application, with hibernate.hbm2ddl.=update
.
How can I ensure that on startup a sql script is executed?
Thereby I want to make sure that at FUNCTION .. LANGUAGE plpgsql
is present in my postgresql
db.
By using 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>
By using Annotations (the following example ought to be placed inside your @Configuration
class)
@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;
}