如何在启动时使用Spring加载sql函数? [英] How to load a sql function on startup with Spring?

查看:129
本文介绍了如何在启动时使用Spring加载sql函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序使用了 Spring-Boot ,其中 hibernate.hbm2ddl。= update 。 p>

如何确保在启动时执行sql脚本?
因此我想确保在 FUNCTION .. LANGUAGE plpgsql 存在于我的 postgresql db中。 使用 XML

<$
$ b

解决方案

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;
}

这篇关于如何在启动时使用Spring加载sql函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆