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

HibernateOrmPropertiesHbm2ddl

Hibernate Problem Overview


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][1] 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?][2]
  • [Schema is not dropped on hbmddl.auto = create.drop][3]

But still nothing in the official documentation.

[1]: http://docs.jboss.org/hibernate/stable/orm/manual/en-US/html/ch03.html#configuration-misc-properties "Table 3.7. Miscellaneous Properties" [2]: https://stackoverflow.com/a/1689769/238421 [3]: https://stackoverflow.com/a/6752698/238421

Hibernate Solutions


Solution 1 - Hibernate

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.

Solution 2 - Hibernate

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

Solution 3 - Hibernate

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionDanilo PiazzalungaView Question on Stackoverflow
Solution 1 - HibernateFerdous WahidView Answer on Stackoverflow
Solution 2 - HibernateBaptiste MathusView Answer on Stackoverflow
Solution 3 - HibernateJoel HarrisView Answer on Stackoverflow