Y at-il un workflow simple pour générer un schéma de base de données à partir des classes avec correspondances mise en veille prolongée?
Question
Id comme pour définir mes objets puis utiliser mise en veille prolongée pour générer mon ddl de cette situation. Mais il semble que le seul véritable flux de travail avec mise en veille prolongée est de générer un schéma datbase puis l'ingénierie inverse il. Suis-je envie de faire quelque chose qui n'a pas de sens?
La solution
Oui, il y a un hibernate.hbm2ddl.auto
de propriété. La documentation dit:
valide automatiquement ou de l'exportation DDL à la base de données lorsque la SessionFactory est créée. Avec create-drop, le schéma de base de données sera lorsque la SessionFactory est fermée explicitement.
par exemple. validate | mise à jour | créer | create-drop
Il y a plusieurs façons de définir cette propriété, selon la façon dont vous configurez votre SessionFactory
. La façon de mise en veille prolongée est d'ajouter simplement:
<property name="hibernate.hbm2ddl.auto">update</property>
Autres conseils
Mais il semble que le seul véritable flux de travail avec mise en veille prolongée est de générer un schéma de base de données et l'ingénierie inverse il.
Non, absolument pas. Historiquement, Hibernate prend en charge plusieurs approches:
-
De haut en bas:. Vous commencez avec le modèle d'objet, puis créez metatdata de cartographie soit avec des fichiers XML ou des annotations, puis générer le schéma en utilisant l'outil de
hbm2ddl
de mise en veille prolongée -
Bottom up:. Vous commencez avec une base de données existante et de générer des correspondances et des classes Java (ou tout simplement des classes Java annotées) à partir du schéma de base de données à l'aide
hbm2hbmxml
ethbm2java
-
Moyen sur:. Vous commencez à écrire être mapping XML Hibernate et générer des classes Java en utilisant DDL et respectivement
hbm2ddl
ethbm2java
-
Rendez-vous au milieu: Vous avez un modèle Java existant et une base de données existante. outillage Hibernate ne peut pas aider beaucoup ici, vous aurez très probablement à mappings d'écriture à la main et faire quelques refactoring de la base de données ou du code Java ou utiliser une sorte de pont. Ceci est la pire situation.
Alors, comme nous l'avons vu, Hibernate prend en charge plusieurs flux de travail et fournit des outils pour eux. Et dans votre cas, vous êtes à la recherche de l'outil appelé hbm2ddl
(également connu sous le nom SchemaExport
, qui est le nom de la classe mise en œuvre). Il y a plusieurs façons de l'utiliser:
- Vous pouvez exécuter
SchemaExport
programme. - Vous pouvez activer l'exportation automatique du schéma au moment de la création de
SessionFactory
en définissant la propriétéhibernate.hbm2ddl.auto
à une valeur appropriée - Vous pouvez utiliser la tâche Ant
<hbm2ddl>
Références
- Hibernate Core Guide de référence
- Outils Hibernate Guide de référence