Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/building-native-image.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ such as importing test data into the database.
----
quarkus.native.resources.includes=version.txt
%test.quarkus.native.resources.includes=version.txt,import-dev.sql
%test.quarkus.hibernate-orm.database.generation=drop-and-create
%test.quarkus.hibernate-orm.schema-management.strategy=drop-and-create
%test.quarkus.hibernate-orm.sql-load-script=import-dev.sql
----

Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/databases-dev-services.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ When starting Dev Services (for example, in tests or in dev mode), you will see
[IMPORTANT]
====
When using Dev Services with Hibernate ORM, by default Quarkus will wipe out the database on application startup, which will wipe out the database data on your Docker host's filesystem.
Configure `quarkus.hibernate-orm.database.generation=none` or `quarkus.hibernate-orm.database.generation=validate` to avoid this behavior.
Configure `quarkus.hibernate-orm.schema-management.strategy=none` or `quarkus.hibernate-orm.schema-management.strategy=validate` to avoid this behavior.

Also, using Flyway to migrate your schema when starting the application will modify the database data on your Docker hosts's file system.
====
Expand Down
8 changes: 4 additions & 4 deletions docs/src/main/asciidoc/getting-started-dev-services.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -237,10 +237,10 @@ Quarkus will automatically stop the container when your application stops.

If you play with your code some more, you may notice that sometimes, after making an application change, http://localhost:8080/hello/names doesn't list any names.
What's going on? By default, in dev mode, with a Dev Services database,
Quarkus configures Hibernate ORM database generation to be `drop-and-create`.
See the xref:hibernate-orm.adoc#quarkus-hibernate-orm_quarkus-hibernate-orm-database-generation[Hibernate configuration reference] for more details.
If a code change triggers an application restart, the database tables
will be dropped (deleted) and then re-created.
Quarkus configures Hibernate ORM database schema management strategy to be `drop-and-create`.
See the xref:hibernate-orm.adoc#quarkus-hibernate-orm_quarkus-hibernate-orm-schema-management-strategy[Hibernate configuration reference] for more details.
If a code change triggers an application restart, the database tables
will be dropped (deleted) and then re-created.

This is convenient, but what if you'd prefer the database to always have content?
That would make testing easier.
Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/getting-started-reactive.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ Before going further, open the `src/main/resources/application.properties` file
[source, properties]
----
quarkus.datasource.db-kind=postgresql
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
----

It instructs the application to use PostgreSQL for the database and to handle the database schema generation.
Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/hibernate-orm-panache.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,7 @@ INSERT INTO person (id, birth, name, status) VALUES (1, '1995-09-12', 'Emily Bro
ALTER SEQUENCE person_seq RESTART WITH 2;
----

NOTE: If you would like to initialize the DB when you start the Quarkus app in your production environment, add `quarkus.hibernate-orm.database.generation=drop-and-create` to the Quarkus startup options in addition to `import.sql`.
NOTE: If you would like to initialize the DB when you start the Quarkus app in your production environment, add `quarkus.hibernate-orm.schema-management.strategy=drop-and-create` to the Quarkus startup options in addition to `import.sql`.

After that, you can see the people list and add new person as followings:

Expand Down
26 changes: 13 additions & 13 deletions docs/src/main/asciidoc/hibernate-orm.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ quarkus.datasource.username = hibernate
quarkus.datasource.password = hibernate
quarkus.datasource.jdbc.url = jdbc:postgresql://localhost:5432/hibernate_db

quarkus.hibernate-orm.database.generation=drop-and-create <2>
quarkus.hibernate-orm.schema-management.strategy=drop-and-create <2>
----
<1> xref:datasource.adoc[Configure the datasource].
<2> Drop and create the database at startup (use `update` to only update the schema).
Expand Down Expand Up @@ -346,7 +346,7 @@ For instance, the following snippet defines a default datasource and a default p
quarkus.datasource.db-kind=h2
quarkus.datasource.jdbc.url=jdbc:h2:mem:default;DB_CLOSE_DELAY=-1

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
----

Using a map based approach, it is possible to define named persistence units:
Expand All @@ -359,11 +359,11 @@ quarkus.datasource."users".jdbc.url=jdbc:h2:mem:users;DB_CLOSE_DELAY=-1
quarkus.datasource."inventory".db-kind=h2 <2>
quarkus.datasource."inventory".jdbc.url=jdbc:h2:mem:inventory;DB_CLOSE_DELAY=-1

quarkus.hibernate-orm."users".database.generation=drop-and-create <3>
quarkus.hibernate-orm."users".schema-management.strategy=drop-and-create <3>
quarkus.hibernate-orm."users".datasource=users <4>
quarkus.hibernate-orm."users".packages=org.acme.model.user <5>

quarkus.hibernate-orm."inventory".database.generation=drop-and-create <6>
quarkus.hibernate-orm."inventory".schema-management.strategy=drop-and-create <6>
quarkus.hibernate-orm."inventory".datasource=inventory
quarkus.hibernate-orm."inventory".packages=org.acme.model.inventory
----
Expand Down Expand Up @@ -403,10 +403,10 @@ Using the `packages` configuration property is simple:

[source,properties]
----
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-orm.packages=org.acme.model.defaultpu

quarkus.hibernate-orm."users".database.generation=drop-and-create
quarkus.hibernate-orm."users".schema-management.strategy=drop-and-create
quarkus.hibernate-orm."users".datasource=users
quarkus.hibernate-orm."users".packages=org.acme.model.user
----
Expand Down Expand Up @@ -520,15 +520,15 @@ For example, with the following configuration:
----
quarkus.hibernate-orm."pg".packages=org.acme.model.shared
quarkus.hibernate-orm."pg".datasource=pg
quarkus.hibernate-orm."pg".database.generation=drop-and-create
quarkus.hibernate-orm."pg".schema-management.strategy=drop-and-create
quarkus.hibernate-orm."pg".active=false
quarkus.datasource."pg".db-kind=h2
quarkus.datasource."pg".active=false
quarkus.datasource."pg".jdbc.url=jdbc:postgresql:///your_database

quarkus.hibernate-orm."oracle".packages=org.acme.model.shared
quarkus.hibernate-orm."oracle".datasource=oracle
quarkus.hibernate-orm."oracle".database.generation=drop-and-create
quarkus.hibernate-orm."oracle".schema-management.strategy=drop-and-create
quarkus.hibernate-orm."oracle".active=false
quarkus.datasource."oracle".db-kind=oracle
quarkus.datasource."oracle".active=false
Expand Down Expand Up @@ -728,7 +728,7 @@ Quarkus development mode is really useful for applications that mix front end or

There are a few common approaches to make the best of it.

The first choice is to use `quarkus.hibernate-orm.database.generation=drop-and-create` in conjunction with `import.sql`.
The first choice is to use `quarkus.hibernate-orm.schema-management.strategy=drop-and-create` in conjunction with `import.sql`.

That way for every change to your app and in particular to your entities, the database schema will be properly recreated
and your data fixture (stored in `import.sql`) will be used to repopulate it from scratch.
Expand All @@ -741,7 +741,7 @@ By default, in `dev` and `test` modes, Hibernate ORM, upon boot, will read and e
You can change the file name by changing the property `quarkus.hibernate-orm.sql-load-script` in `application.properties`.
====

The second approach is to use `quarkus.hibernate-orm.database.generation=update`.
The second approach is to use `quarkus.hibernate-orm.schema-management.strategy=update`.
This approach is best when you do many entity changes but
still need to work on a copy of the production data
or if you want to reproduce a bug that is based on specific database entries.
Expand All @@ -750,7 +750,7 @@ including altering your database structure which could lead to data loss.
For example if you change structures which violate a foreign key constraint, Hibernate ORM might have to bail out.
But for development, these limitations are acceptable.

The third approach is to use `quarkus.hibernate-orm.database.generation=none`.
The third approach is to use `quarkus.hibernate-orm.schema-management.strategy=none`.
This approach is best when you are working on a copy of the production data but want to fully control the schema evolution.
Or if you use a database schema migration tool like xref:flyway.adoc[Flyway] or xref:liquibase.adoc[Liquibase].

Expand Down Expand Up @@ -1204,7 +1204,7 @@ CAUTION: Some databases like MariaDB/MySQL do not support database schemas. In t

[source,properties]
----
quarkus.hibernate-orm.database.generation=none <1>
quarkus.hibernate-orm.schema-management.strategy=none <1>

quarkus.hibernate-orm.multitenant=SCHEMA <2>

Expand Down Expand Up @@ -1273,7 +1273,7 @@ If the list of tenants needs to change at runtime, you must <<programmatically-r

[source,properties]
----
quarkus.hibernate-orm.database.generation=none <1>
quarkus.hibernate-orm.schema-management.strategy=none <1>

quarkus.hibernate-orm.multitenant=DATABASE <2>
quarkus.hibernate-orm.datasource=base <3>
Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/hibernate-reactive.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ quarkus.datasource.password = quarkus_test
quarkus.datasource.reactive.url = vertx-reactive:postgresql://localhost/quarkus_test <1>

# drop and create the database at startup (use `update` to only update the schema)
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
----

<1> The only different property from a Hibernate ORM configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,7 @@ quarkus.hibernate-search-orm.indexing.plan.synchronization.strategy=sync <4>
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql://localhost/quarkus_test
%prod.quarkus.datasource.username=quarkus_test
%prod.quarkus.datasource.password=quarkus_test
%prod.quarkus.hibernate-orm.database.generation=create
%prod.quarkus.hibernate-orm.schema-management.strategy=create
%prod.quarkus.hibernate-search-orm.elasticsearch.hosts=localhost:9200 <5>
----
<1> Let's create a PostgreSQL datasource.
Expand Down Expand Up @@ -667,7 +667,7 @@ you will have to set the following properties to get similar behavior:

[source,properties]
----
%dev,test.quarkus.hibernate-orm.database.generation=drop-and-create
%dev,test.quarkus.hibernate-orm.schema-management.strategy=drop-and-create
%dev,test.quarkus.hibernate-search-orm.schema-management.strategy=drop-and-create
----

Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/quartz.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ quarkus.datasource.password=quarkus_test
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost/quarkus_test

# Hibernate configuration
quarkus.hibernate-orm.database.generation=none
quarkus.hibernate-orm.schema-management.strategy=none
quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.sql-load-script=no-file

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ quarkus.http.auth.basic=true
%prod.quarkus.datasource.password=quarkus
%prod.quarkus.datasource.jdbc.url=jdbc:postgresql:quarkus

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
----

By adding the `%prod.` profile prefix, you ensure that the data source properties are only observed by an application running in production mode.
Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/spring-data-jpa.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ quarkus.datasource.password=quarkus_test
quarkus.datasource.jdbc.url=jdbc:postgresql:quarkus_test
quarkus.datasource.jdbc.max-size=8
quarkus.datasource.jdbc.min-size=2
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
----

This configuration assumes that PostgreSQL will be running locally.
Expand Down
2 changes: 1 addition & 1 deletion docs/src/main/asciidoc/spring-data-rest.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ quarkus.datasource.username=quarkus_test
quarkus.datasource.password=quarkus_test
quarkus.datasource.jdbc.url=jdbc:postgresql:quarkus_test
quarkus.datasource.jdbc.max-size=8
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
----

This configuration assumes that PostgreSQL will be running locally.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
quarkus.datasource.db-kind=h2

#quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.audit-table-suffix=
quarkus.hibernate-envers.audit-table-prefix=P_
quarkus.hibernate-envers.revision-field-name=GEN
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
quarkus.datasource.db-kind=h2

#quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-orm.packages=io.quarkus.hibernate.orm.envers
quarkus.hibernate-envers.audit-table-suffix=
quarkus.hibernate-envers.audit-table-prefix=P_
quarkus.hibernate-envers.revision-field-name=GEN
quarkus.hibernate-envers.revision-type-field-name=GEN_TYPE

quarkus.datasource."db1".db-kind=h2
quarkus.hibernate-orm."db1".database.generation=drop-and-create
quarkus.hibernate-orm."db1".schema-management.strategy=drop-and-create
quarkus.hibernate-orm."db1".datasource=db1
quarkus.hibernate-orm."db1".packages=io.quarkus.hibernate.orm.envers
quarkus.hibernate-envers."db1".audit-table-suffix=
Expand All @@ -18,7 +18,7 @@ quarkus.hibernate-envers."db1".revision-field-name=REVISION
quarkus.hibernate-envers."db1".revision-type-field-name=REV_TYPE

quarkus.datasource."db2".db-kind=h2
quarkus.hibernate-orm."db2".database.generation=drop-and-create
quarkus.hibernate-orm."db2".schema-management.strategy=drop-and-create
quarkus.hibernate-orm."db2".datasource=db2
quarkus.hibernate-orm."db2".packages=io.quarkus.hibernate.orm.envers
quarkus.hibernate-envers."db2".audit-table-suffix=
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.audit-strategy=org.hibernate.envers.strategy.ValidityAuditStrategy
quarkus.hibernate-envers.allow-identifier-reuse=true
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.audit-strategy=org.hibernate.envers.strategy.ValidityAuditStrategy
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.default-schema=public
quarkus.hibernate-envers.default-catalog=
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.do-not-audit-optimistic-locking-field=false
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.embeddable-set-ordinal-field-name=ORD
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.modified-column-naming-strategy=org.hibernate.envers.boot.internal.ImprovedModifiedColumnNamingStrategy
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.global-with-modified-flag=true
quarkus.hibernate-envers.modified-flag-suffix=_changed
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.original-id-prop-name=oid
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.revision-listener=io.quarkus.hibernate.orm.envers.MyListenerlessRevisionListener
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.revision-on-collection-change=false
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.store-data-at-delete=true
quarkus.hibernate-envers.audit-table-suffix=_SUFFIX
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.track-entities-changed-in-revision=true
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.use-revision-entity-with-native-id=false
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
quarkus.datasource.db-kind=h2

quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
quarkus.hibernate-envers.audit-strategy=org.hibernate.envers.strategy.ValidityAuditStrategy
quarkus.hibernate-envers.audit-strategy-validity-store-revend-timestamp=true
quarkus.hibernate-envers.audit-strategy-validity-end-rev-field-name=REV_END
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
quarkus.datasource.db-kind=h2

#quarkus.hibernate-orm.log.sql=true
quarkus.hibernate-orm.database.generation=drop-and-create
quarkus.hibernate-orm.schema-management.strategy=drop-and-create
Original file line number Diff line number Diff line change
Expand Up @@ -227,10 +227,11 @@ void includeArchivesHostingEntityPackagesInIndex(HibernateOrmConfig hibernateOrm
@Record(RUNTIME_INIT)
@Consume(ServiceStartBuildItem.class)
@BuildStep(onlyIf = IsDevelopment.class)
void warnOfSchemaProblems(HibernateOrmConfig config, HibernateOrmRecorder recorder) {
for (var e : config.persistenceUnits().entrySet()) {
void warnOfSchemaProblems(HibernateOrmConfig hibernateOrmBuildTimeConfig,
HibernateOrmRuntimeConfig hibernateOrmRuntimeConfig, HibernateOrmRecorder recorder) {
for (var e : hibernateOrmBuildTimeConfig.persistenceUnits().entrySet()) {
if (e.getValue().validateInDevMode()) {
recorder.doValidation(e.getKey());
recorder.doValidation(hibernateOrmRuntimeConfig, e.getKey());
}
}
}
Expand Down
Loading
Loading