Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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:

  • Hibernate hbm2ddl.auto possible values and what they do?
  • Schema is not dropped on hbmddl.auto = create.drop

But still nothing in the official documentation.

like image 395
Danilo Piazzalunga Avatar asked Aug 06 '13 10:08

Danilo Piazzalunga


2 Answers

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.
like image 84
Ferdous Wahid Avatar answered Sep 20 '22 20:09

Ferdous Wahid


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:

  • either file an enhancement request in the Hibernate issue tracker (better with a proposal)
  • or read the corresponding code

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 :-).

like image 26
Baptiste Mathus Avatar answered Sep 22 '22 20:09

Baptiste Mathus