Esiste un semplice flusso di lavoro per generare uno schema di database da classi con mappature Sospensione?
Domanda
Id come per definire i miei oggetti quindi utilizzare in letargo per generare il mio DDL da questo. Ma sembra che l'unico vero flusso di lavoro con Hibernate è quello di generare uno schema datbase e poi il reverse engineering di esso. Am I voler fare qualcosa che non ha senso?
Soluzione
Sì, c'è un hibernate.hbm2ddl.auto
proprietà. Il documentazione dice:
convalida automaticamente o esportazioni schema DDL al database quando viene creata la SessionFactory. Con create-drop, lo schema di database verrà eliminato quando la SessionFactory è chiusa in modo esplicito.
es. validate | aggiornamento | creare | creare-drop
Ci sono diversi modi per definire questa proprietà, a seconda di come si configura il SessionFactory
. Il modo di ibernazione è quello di aggiungere semplicemente:
<property name="hibernate.hbm2ddl.auto">update</property>
Altri suggerimenti
Ma sembra che l'unico vero flusso di lavoro con Hibernate è di generare uno schema di database e quindi il reverse engineering di esso.
No, assolutamente no. Storicamente, Hibernate supporta diversi approcci:
-
Top-down:. Si inizia con il modello a oggetti, quindi creare metadata mappatura sia con file XML o annotazioni e quindi generare lo schema utilizzando lo strumento
hbm2ddl
di Hibernate -
fino inferiore:. si inizia con un database esistente e generare mappature e classi Java (o classi Java appena annotate) dal schema del database utilizzando
hbm2hbmxml
ehbm2java
-
Medio out:. Si avvia essere iscritto mapping XML Hibernate e generare classi DDL e Java utilizzando rispettivamente
hbm2ddl
ehbm2java
-
Incontra nel mezzo: Hai un modello Java esistente e un database esistente. Hibernate utensili non può fare molto qui, avrete molto probabilmente a mappature di scrittura a mano e fare un po 'di refactoring del database, o del codice Java, o utilizzare una sorta di ponte. Questa è la situazione peggiore.
Quindi, come abbiamo visto, Hibernate supporta diversi flussi di lavoro e fornisce attrezzature per loro. E nel tuo caso, si sta cercando il tool chiamato hbm2ddl
(noto anche come SchemaExport
, che è il nome della classe che implementa esso). Ci sono diversi modi per usarlo:
- È possibile eseguire
SchemaExport
di programmazione. - È possibile attivare l'esportazione automatica dello schema in fase di creazione
SessionFactory
impostando lahibernate.hbm2ddl.auto
proprietà su un valore appropriato - È possibile utilizzare l'attività Ant
<hbm2ddl>
Bibliografia
- Guida di Hibernate Core Reference
- Hibernate Tools Guida di riferimento