55

I am looking at the Hibernate hbm2ddl.auto configuration property and its possible values:

  • validate
  • update
  • create
  • create-drop

What do all these values do?

The Hibernate Reference Documentation only talks briefly about create-drop, but doesn't say anything about the other values:

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

I found very useful explanations in these Stack Overflow questions:

But still nothing in the official documentation.

2
  • 1
    Check out the answers to this question: stackoverflow.com/questions/438146/… Commented Oct 18, 2013 at 23:13
  • Actually, I linked to this very question. I was looking for the official explanation in Hibernate documentation. Commented Nov 5, 2013 at 13:44

3 Answers 3

78

For hbm2ddl.auto property the list of possible options is:

  • validate: validate that the schema matches, make no changes to the schema of the database, you probably want this for production.
  • update: update the schema to reflect the entities being persisted
  • create: creates the schema necessary for your entities, destroying any previous data.
  • create-drop: create the schema as in create above, but also drop the schema at the end of the session. This is great in early development or for testing.
Sign up to request clarification or add additional context in comments.

3 Comments

I tried to flush out your answers, please review my changes to make sure they reflect your original intent and are accurate.
note that update will not create a table that does not exists, while create will always truncate any existing data. there is no way to have an automatic way to tell hibernate to create table only if it does not yet exist
@humanityANDpeace I always use update and I never faced "missing table" or something
12

The link you provided is already the official documentation. So, there's nothing more official and comprehensive as-of today.

So I guess the answer to your question is two-fold:

I know this isn't the perfect answer you dreamt about, but this is actually all you have today.

But the good news is that the project is open-source, so you have all you need to help improve it :-).

1 Comment

Created an issue, with a tentative proposal: hibernate.atlassian.net/browse/HHH-8789
4

The documentation has been updated to include this information. Here is a link to the official, current documentation for this feature.

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:

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.