关于orm:Hibernate hbm2ddl.auto,可能的值以及它们的作用

Hibernate hbm2ddl.auto, possible values, and what they do

我正在查看Hibernate hbm2ddl.auto配置属性及其可能的值:

  • validate
  • update
  • create
  • create-drop

所有这些价值观做了什么?

Hibernate参考文档仅简要介绍了create-drop,但没有说明其他值:

hibernate.hbm2ddl.auto

Automatically validates or exports schema DDL to the database when the SessionFactory is created. With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.

e.g. validate | update | create | create-drop

我在这些Stack Overflow问题中找到了非常有用的解释:

  • Hibernate hbm2ddl.auto可能的值和它们的作用是什么?
  • 架构不会在hbmddl.auto = create.drop上删除

但官方文档中仍然没有任何内容。


对于hbm2ddl.auto属性,可能的选项列表是:

  • validate:验证模式是否匹配,不对数据库的模式进行任何更改,您可能希望将其用于生产。
  • 更新:更新架构以反映持久化的实体
  • create:创建实体所需的模式,销毁任何以前的数据。
  • create-drop:在上面的create中创建模式,但也在会话结束时删除模式。这在早期开发或测试中很有用。


您提供的链接已经是官方文档。所以,今天没有任何更正式和全面的内容。

所以我想你的问题的答案是双重的:

  • 要么在Hibernate问题跟踪器中提交增强请求(最好使用提案)
  • 或阅读相应的代码

我知道这不是你梦寐以求的完美答案,但实际上这就是你今天所拥有的。

但好消息是该项目是开源的,所以你需要帮助改进它:-)。


文档已更新,以包含此信息。以下是此功能的官方当前文档的链接。

hibernate.hbm2ddl.auto (e.g. none (default value), create-only, drop,
create, create-drop, validate, and update)

Setting to perform SchemaManagementTool actions automatically as part of the SessionFactory lifecycle. Valid options are defined by the
externalHbm2ddlName value of the Action enum:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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