Je travaille sur un projet en Java (à l'aide de chaussures de printemps, Thymeleaf, Hibernate, JPA, MySQL). Chaque fois que je crée une nouvelle classe de modèle, je dois créer une table dans la base de données ou si je fais une modification de la classe modèle, je dois modifier la table par moi-même. Y a-t-il un moyen d'éviter cette base de données. Par exemple, je vais créer des classes de modèle et déclarer leurs relations mes tables de base de données seront générées automatiquement. À l'avenir, si je modifie mes classes, ils seront appliqués à la base de données automatiquement sans perdre de données. P>
Auparavant, j'ai travaillé sur PHP, Laravel. Là tout ce que je devais faire, c'est 1) Commande d'exécution PHP Artisan FAIT: Migration Create_posts_table CODE>, 2) Déclarez des colonnes telles que $ TABLE-> CORDER (CODE>, CODE> Code> $ TABLE -> ÉTRANGER ("user_id ') -> Références (" ID ") -> On (" Utilisateurs'); CODE> puis 3) Commande Exécuter PHP Artisan migrer code>. C'est ça. Aucun script SQL n'est nécessaire. Je me demandais si Java, Spring a quelque chose comme ça. P>
3 Réponses :
À mon avis, la manière idéale est de créer un fichier SQL qui créera le schéma au démarrage pour nous. p>
pour laisser le démarrage à ressort pour le créer pour vous p> Autres valeurs possibles: Créer, Créer-goutte, validez em> p> Explication plus détaillée forte> p> h2>
Bien sûr, vous pouvez le faire. P>
Utiliser Vous pouvez également utiliser des outils plus avancés tels que https://www.liquibase.org/ p> printemps.jpa.hibernate.ddl-auto = mise à jour code> dans votre application.properties. p>
Vous pouvez faire de la migration à l'aide de la migration de la migration de Laravel. p>
Ajoutez la dépendance et placez vos fichiers SQL de migration à CLASSPATH: DB / Migration. La voie aérienne vérifiera automatiquement la version des fichiers SQL et appliquera toutes les migrations en attente. P>
En fait, je pense que c'est une mauvaise pratique pour que la base de données soit générée automatiquement, simplement parce que vous n'avez pas / contrôle limité sur les noms de contraintes. Aussi, lorsqu'un changement passe en production, vous ne pouvez être sûr que si la base de données ne sera en aucun cas endommagée, si vous le faites manuellement
Aussi Cette réponse explique ce que
printemps.jpa.hibernate.ddl-auto = mise à jour code>@XtremeBaumer merci. J'ai déjà vu cette réponse. Mais il n'est pas recommandé d'utiliser dans la production. C'est pourquoi je cherchais d'autres options. Donc, si j'utilise
printemps.jpa.hibernate.ddl-auto = mise à jour code> dans le développement et supprimez de la production, une modification est terminée sur le projet comment la modification peut être appliquée à la partie de production?