Hibernate hbm2ddl.auto、可能的值以及它们的作用
Posted
技术标签:
【中文标题】Hibernate hbm2ddl.auto、可能的值以及它们的作用【英文标题】:Hibernate hbm2ddl.auto, possible values, and what they do 【发布时间】:2013-08-07 06:59:36 【问题描述】:我正在查看 Hibernate hbm2ddl.auto
配置属性及其可能的值:
validate
update
create
create-drop
所有这些值有什么作用?
Hibernate Reference Documentation 只简单介绍了create-drop
,而没有提及其他值:
hibernate.hbm2ddl.auto
在创建
SessionFactory
时自动验证架构 DDL 或将其导出到数据库。使用create-drop
,当SessionFactory
显式关闭时,数据库架构将被删除。例如
validate
|update
|create
|create-drop
我在这些 Stack Overflow 问题中发现非常有用的解释:
Hibernate hbm2ddl.auto possible values and what they do? Schema is not dropped on hbmddl.auto = create.drop但官方文档中仍然没有。
【问题讨论】:
查看这个问题的答案:***.com/questions/438146/… 实际上,我链接到了这个问题。我在 Hibernate 文档中寻找 the 官方解释。 【参考方案1】:对于hbm2ddl.auto
属性,可能的选项列表是:
【讨论】:
我试图清除您的答案,请检查我的更改以确保它们反映您的初衷并且准确无误。 请注意,update 不会创建不存在的表,而 create 将始终截断任何现有数据。没有办法自动告诉 hibernate 仅在表不存在时创建表 @humanityANDpeace 我总是使用更新,我从来没有遇到过“丢失的桌子”之类的情况【参考方案2】:您提供的链接已经是官方文档。所以,到目前为止,没有比今天更正式、更全面的了。
所以我猜你的问题的答案有两个:
要么在Hibernate issue tracker 中提交增强请求(最好有提案) 或read the corresponding code我知道这不是你梦寐以求的完美答案,但这实际上是你今天所拥有的一切。
但好消息是该项目是开源的,因此您拥有帮助改进它所需的一切:-)。
【讨论】:
创建了一个问题,提出了一个暂定提案:hibernate.atlassian.net/browse/HHH-8789【参考方案3】:已更新文档以包含此信息。这是此功能的官方当前documentation 的链接。
hibernate.hbm2ddl.auto(例如无(默认值)、仅创建、删除、 创建、创建-删除、验证和更新)
设置为在 SessionFactory 生命周期中自动执行 SchemaManagementTool 操作。有效选项由 Action 枚举的 externalHbm2ddlName 值:
none No action will be performed. create-only Database creation will be generated. drop Database dropping will be generated. create Database dropping will be generated followed by database creation. create-drop Drop the schema and recreate it on SessionFactory startup. Additionally, drop the schema on SessionFactory shutdown. validate Validate the database schema update Update the database schema
【讨论】:
以上是关于Hibernate hbm2ddl.auto、可能的值以及它们的作用的主要内容,如果未能解决你的问题,请参考以下文章
休眠 - hibernate.hbm2ddl.auto = 验证