jpa/hibernate 配置初始化数据库 - ddl-auto
【代码】jpa/hibernate配置初始化数据库-ddl-auto。
·
ddl-auto 选项:
hibernate:
ddl-auto: update # 可选值:none, update, create, create-drop, validate
- none: 不做任何操作, 即不使用 Hibernate 自动生成表结构 1
- update: 更新表结构
- create: 每次启动删除旧表创建新表
- create-drop: 启动时创建,结束时删除
- validate: 验证表结构,不会更改数据库
建议:
- 开发时使用 update, 但要注意检查生成的表结构是否符合预期
- 测试时使用 create 或 create-drop
- 生产使用 none 并配合数据库迁移工具管理表结构, 禁用 Hibernate 的自动表生成功能
- 如果你已经通过 hibernate 的 ddl-auto 配置(如 update 或 create)让 Hibernate 自动生成数据库表结构,那么通常不需要再额外配置 sql.init 来加载数据库表初始化脚本 ( schema-locations: )(如 schema-init.sql)。
sql:
init:
# - always: 每次启动都执行
# - embedded: 只对嵌入式数据库( 如 H2、SQLite )执行
# - never: 从不执行
mode: ${DATABASE_INIT}
# schema-locations: "classpath:schema-init.sql"
data-locations: "classpath:data.sql"
- 保持配置的简单性, 避免混合使用多种初始化方式, 清晰划分职责(表结构vs数据初始化)。如果需要同时使用 ddl-auto 和 sql.init,确保 sql.init 的脚本只包含数据初始化 ( data-locations: )(如 INSERT 语句),而不包含表结构定义(如 CREATE TABLE)。
- 不同环境(开发、测试、生产)可能需要不同的初始化策略
- 避免冲突, ddl-auto 和 sql.init ,一个负责表结构,一个负责数据初始化。
参考:
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)