“Spring.datasource.initialization-mode”的版本间的差异
跳到导航
跳到搜索
Jihongchang(讨论 | 贡献) |
Jihongchang(讨论 | 贡献) |
||
第7行: | 第7行: | ||
如果连接的数据库是 hsqldb、h2、derby 之外的其他数据库,则不会执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML | 如果连接的数据库是 hsqldb、h2、derby 之外的其他数据库,则不会执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML | ||
+ | |||
=== always === | === always === | ||
第14行: | 第15行: | ||
=== never === | === never === | ||
值为 never 时,用不执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML; | 值为 never 时,用不执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML; | ||
+ | |||
+ | |||
+ | === 另外 === | ||
+ | 如果用嵌入式数据库 h2,指定是存储到文件而不是内存的,并且想之后长期使用的,为了保留数据,可以在第一次运行程序创建了主要的表结构之后把 spring.datasource.initialization-mode 配置成 never |
2023年2月16日 (四) 10:22的版本
spring.datasource.initialization-mode 默认值是 embedded
embedded
值为 embedded 的情况下,框架会根据连接类型判断当前连接的是不是嵌入式数据库(hsqldb、h2、derby),如果是嵌入式数据库的话,
每次程序启动都会执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML;
如果连接的数据库是 hsqldb、h2、derby 之外的其他数据库,则不会执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML
always
值为 embedded 的情况下,不考虑数据库的类型,总是会在启动的时候执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML;
never
值为 never 时,用不执行 spring.datasource.schema 里的 DDL 和 spring.datasource.data 里的 DML;
另外
如果用嵌入式数据库 h2,指定是存储到文件而不是内存的,并且想之后长期使用的,为了保留数据,可以在第一次运行程序创建了主要的表结构之后把 spring.datasource.initialization-mode 配置成 never