java如何在db模式生成之后但在应用程序启动之前执行sql脚本
我想从Java类生成DB结构
jpa.generate-ddl: true
jpa.ddl-auto: true
此外,我需要在应用程序启动之前运行SQL脚本,因为我有@PostConstruct
方法来使用这些数据
你能举例说明如何在Spring Boot中实现这一点吗
你可以在下面搜索框中键入要查询的问题!
我想从Java类生成DB结构
jpa.generate-ddl: true
jpa.ddl-auto: true
此外,我需要在应用程序启动之前运行SQL脚本,因为我有@PostConstruct
方法来使用这些数据
你能举例说明如何在Spring Boot中实现这一点吗
# 1 楼答案
一个具有所需功能的简单spring boot应用程序可以在网站上找到。 https://github.com/salilotr89/Spring-boot-postgres-dbinit
Spring JDBC具有数据源初始值设定项功能。Spring Boot默认启用它,并从标准位置模式加载SQL。sql和数据。sql(在类路径的根目录中)
此外,Spring Boot将加载模式-${platform}。sql和数据-${platform}。sql文件(如果存在),其中平台是spring的值。数据源。平台,例如,您可以选择将其设置为数据库的供应商名称(hsqldb、h2、oracle、mysql、postgresql等)
Spring Boot默认启用Spring JDBC初始值设定项的fail fast功能,因此如果脚本导致异常,应用程序将无法启动。可以通过设置spring来更改脚本位置。数据源。schema和spring。数据源。如果spring,则两个位置都不会被处理。数据源。初始化=假
要禁用fail fast,可以设置spring。数据源。错误时继续=真。一旦应用程序成熟并部署了几次,这将非常有用,因为脚本可以充当“穷人的迁移” — 例如,插入失败意味着数据已经存在,因此不需要阻止应用程序运行
如果你想使用这个模式。在JPA应用程序中进行sql初始化(使用Hibernate),如果Hibernate尝试创建相同的表,ddl auto=create drop将导致错误。为了避免这些错误,请将ddl auto显式设置为“”(首选)或“无”。无论是否使用ddl auto=create drop,您都可以使用数据。sql来初始化新数据
http://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html
供参考:Spring Boot - Loading Initial Data