Je travaillais sur mon projet d'application Spring boot et j'ai remarqué que, parfois, il y a une erreur de temps de connexion à ma base de données sur un autre serveur (SQL Server). Cela arrive spécialement quand j'essaie de faire une migration de script avec FlyWay
mais cela fonctionne après plusieurs essais.
Puis j'ai remarqué que je n'avais pas précisé spring.jpa.hibernate.ddl-auto
dans mon fichier de propriétés. J'ai fait quelques recherches et j'ai trouvé qu'il est recommandé d'ajouter spring.jpa.hibernate.ddl-auto= create-drop
en cours de développement. Et changez-le en : spring.jpa.hibernate.ddl-auto= none
en production.
Mais je n'ai pas vraiment compris comment cela fonctionne réellement et comment hibernate génère un schéma de base de données en utilisant create-drop
ou none
valeur. Pouvez-vous m'expliquer techniquement comment cela fonctionne réellement, et quelles sont les recommandations pour utiliser cette propriété en développement et sur un serveur de production. Merci de votre compréhension.
1 votes
Pour info, JPA 2.1 possède une fonction standard propriété javax.persistence.schema-generation.database.action donc je ne vois pas vraiment la nécessité d'utiliser les propriétés spécifiques du fournisseur JPA pour la génération de schémas.
0 votes
@NeilStockton Une idée que nous explorons avec Hibernate 6 est la possibilité de pouvoir contrôler la génération de schémas différemment en fonction des catégories ; par exemple, vos tables orm pourraient être
none
mais vous pourriez vouloir que vos tables Hibernate Search et Envers soient générées à l'aide deupdate
puisqu'ils sont gérés en interne par ces projets et que vous ne voulez pas les gérer vous-même manuellement. Actuellement, nous contrôlons cela globalement pour toutes les tables, quelle que soit leur origine/source. C'est une raison supplémentaire d'utiliser des options spécifiques au fournisseur si vous souhaitez l'utiliser.0 votes
Cette propriété est un moyen de spécifier à Hibernate d'appliquer la DDL pour la base de données. Elle est spécifique à hibernate. Pour plus de détails, voir springhow.com/spring-boot-database-initialization