Question

Quel est le meilleur moyen de remplir les tables créées avec jpa lors du démarrage / de l’arrêt de l’application? comme mais avec un langage de manipulation de données à la place d'un langage de définition de données. J'utilise HibernatePersistence en tant que fournisseur de persistance.

Était-ce utile?

La solution 2

Résolu avec import.sql dans le package par défaut et en sélectionnant "créer". comme valeur hibernate.hbm2ddl.auto. Hibernate prend également en charge hibernate.hbm2ddl.import_files .

Autres conseils

Si vous utilisez également spring, alors cette réponse fonctionnera.

Si vous n'utilisez pas Spring, vous devez exécuter le code DDL manuellement. Notez que Hibernate ne dispose que d’un support limité pour modifier la base de données (il ne peut en principe que créer des tables). Donc, si vous avez besoin de quoi que ce soit, vous devez utiliser un code SQL personnalisé.

[EDIT] Si vous n'utilisez pas Spring, vous trouverez un moyen d'obtenir la Session d'Hibernate. Appelez la méthode doWork () qui permet d'exécuter du SQL arbitraire.

Une approche différente consiste à créer les objets de domaine et à les conserver. Je préfère toutefois la première approche, car vous pouvez corriger les identifiants des objets générés de cette manière et effectuer d'autres tâches plus complexes à l'aide de l'interface JPA.

Si vous ne voulez pas écrire beaucoup d'instructions insert , insérez ensuite les données dans la base de données et exportez-les avec un outil SQL tel que SquirrelSQL pouvant créer le insert déclarations pour vous. Placez-les dans un fichier supplémentaire, lisez-le au démarrage, scindez-le en ; et exécutez chaque élément.

Je pense que remplir vos tables avec des instructions insérées SQL de bas niveau n’est pas la meilleure option, car vous devez gérer manuellement les clés étrangères et les refactoriser avec votre code.

Etant donné que vous avez déjà un modèle d’objet et un ORM, une autre solution plus portable consiste à définir vos données init avec vos objets et à laisser le fournisseur JPA les conserver. Cette solution peut sembler lourde, mais utiliser des projets tels que ceci le rend plus plausible.

À des fins de test, j’ai commencé à utiliser un simple script groovy et le plugin gmaven de org.codehaus.groovy.maven. Le plug-in gmaven exécute le script groovy et le script crée import.sql au cours du cycle de vie de maven generate-test-resources. L'utilisation de boucles et de compteurs dans un script est bien préférable à la saisie manuelle d'un fichier contenant des instructions d'insertion. Cela nécessite bien sûr que vous ayez trié les éléments hbm2ddl, car il semble que vous les ayez déjà compris à partir des mises à jour et réponses précédentes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top