简体   繁体   中英

"spring.jpa.hibernate.ddl-auto" property is used for migration?

I am not sure about question since i am not familiar concept of migration exactly. I have just known this is used for updating database without deleting tables manually from database console. Since I have known this as I mentioned, I think like that, If I set this property to "create-drop", I can achieve migration. Am I correct? Can anyone explain it to me or advice any reference?

For the record, the spring.jpa.hibernate.ddl-auto property is Spring Data JPA specific and is their way to specify a value that will eventually be passed to Hibernate under the property it knows, hibernate.hbm2ddl.auto.

The values create , create-drop , validate , and update basically influence how the schema tool management will manipulate the database schema at startup.

For example, the update operation will query the JDBC driver's API to get the database metadata and then Hibernate compares the object model it creates based on reading your annotated classes or HBM XML mappings and will attempt to adjust the schema on-the-fly.

The update operation for example will attempt to add new columns, constraints, etc but will never remove a column or constraint that may have existed previously but no longer does as part of the object model from a prior run.

Typically in test case scenarios, you'll likely use create-drop so that you create your schema, your test case adds some mock data, you run your tests, and then during the test case cleanup, the schema objects are dropped, leaving an empty database.

In development, it's often common to see developers use update to automatically modify the schema to add new additions upon restart. But again understand, this does not remove a column or constraint that may exist from previous executions that is no longer necessary.

In production, it's often highly recommended you use none or simply don't specify this property. That is because it's common practice for DBAs to review migration scripts for database changes, particularly if your database is shared across multiple services and applications.

The possible values for the “spring.jpa.hibernate.ddl-auto” configuration property are the following ones:

  • none - No action is performed. The schema will not be generated.
  • create-only - The database schema will be generated.
  • drop - The database schema will be dropped.
  • create - The database schema will be dropped and created afterward.
  • create-drop - The database schema will be dropped and created afterward. Upon closing the SessionFactory, the database schema will be dropped.
  • validate - The database schema will be validated using the entity mappings.
  • update - The database schema will be updated by comparing the existing database schema with the entity mappings.

These are some of the basic things to be known,

validate: validate the schema, makes no changes to the database. update: update the schema. create: creates the schema, destroying previous data. create-drop: drop the schema when the SessionFactory is closed explicitly, typically when the application is stopped. none: does nothing with the schema, makes no changes to the database

These options seem intended to be developers tools and not to facilitate any production level databases.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM