Sprig Boot下基于SQL Script初始化数据库的方法总结

环境信息

Spring Boot 2.0.3, Windows 7, JPA, Spring Data, MySQL

需求

虽然JPA和Hibernate底层提供了强大的支持,但是在实际开发中,仍然会有需要自定义数据表和初始化数据的需求,对于这个需求,Spring Boot也提供了相应的支持,只是对于这个需求是有一定的前提条件和约束的,换句话说,这些SQL script只能在特定设置和场景下使用。

使用场景和约束

对于数据库的schema和初始化数据是不能无限制地进行执行的,只能对于干净的数据化,或者每次都从0开始创建和执行的应用才适用。

方案1, 基于import.sql

在application.properties中的设置项:

spring.jpa.hibernate.ddl-auto: create/create-drop

适用于初次适用或者每次重新创建的情况。
sql 脚本的指定:

spring.jpa.properties.hibernatel.hbmddl.import_files=file1.sql,file2.sql

默认的路径为classpath下的sql文件。

方案2:基于schema和data的sql脚本

在application.properties下的设置项:

spring.datasource.initialization-mode=ALWAYS
spring.jpa.hibernate.ddl-auto=none

## default; false
spring.jpa.generate-ddl=false

## 指定sql文件
spring.datasource.data=classpath:sql/data-@database.type@.sql
spring.datasource.schema=classpath:sql/schema-@database.type@.sql

这里两个sql文件都是需要进行指定的,否则就会提示错误或者没有提示。
例如: sql文件为空,会提示错误信息
如果注释掉schema.sql文件,则不会提示错误信息,但是什么都不会发生。

总结

这些初始化的脚本都只能执行一次,然后就需要重新更改设置。或者将dll-auto设置为create-drop每次都重新开始。

你可能感兴趣的:(Java技术,数据库,服务化与Spring,Cloud,Spring,Boot实战)