Hibernate - hibernate.hbm2ddl.auto = validate
Domanda
Sono interessato a come funziona hibernate.hbm2ddl.auto = validate in realtà e sto lottando per trovare una documentazione completa.
sistema di produzioneAbbiamo scoperto di recente è stata colpita da http: // opensource. atlassian.com/projects/hibernate/browse/HHH-3532 (Hibernate corrisponde chiavi esterne sul nome, piuttosto che la firma e così li ricreare per voi) e hibernate.hbm2ddl.auto = aggiornamento viene rimosso dal nostro prossimo rilascio.
sarei molto felice di ottenere solo liberarsi di hibernate.hbm2ddl.auto del tutto e gestire il nostro database di noi stessi. Tuttavia, non tutti i miei colleghi condividono questa visione del mondo e alcuni sono molto lieti di aggiungere indietro nel hibernate.hbm2ddl.auto = validate.
mi riguarda questo colpirà lo stesso problema e sono interessati a trovare maggiore documentazione su come questa convalida funziona realmente. La documentazione di Hibernate Comunità ( http: // docs. jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html ) in realtà solo fa riferimento ai valori.
Qualcuno ha qualche puntatori documentazione buono, o una vera e propria esperienza di vita di utilizzo di convalidare in un sistema di produzione?
Soluzione
mi riguarda questo colpirà lo stesso problema e sono interessati a trovare maggiore documentazione su come questa convalida funziona realmente.
A mio parere, la migliore documentazione è il codice sorgente che si poteva controllare per vedere che cosa sta accadendo esattamente. Il metodo in questione è org.hibernate.tool.hbm2ddl.SchemaValidator#validate()
.
Sono andato rapidamente attraverso il codice e I non credo che le verifica SchemaValidator
chiavi esterne nel database : si verifica la presenza di tabelle, colonne, generatori id ma non le chiavi esterne. Un test su un database animale domestico sembra confermare questo comportamento:. Cadere un vincolo di FK non si rompe la convalida dello schema (in altre parole, i controlli validatore se l'applicazione può funzionare, non per l'integrità referenziale)
Ora, HHH-3532 vengano contrassegnati come fisso, perché non l'aggiornamento ad una nuova versione di Hibernate o, se cambiare la versione di Hibernate è troppo pesante, perché non si applica la patch per HHH-3532 te?
Avere che tutti hanno detto, I non utilizzare hibernate.hbm2ddl.auto=update
al database di produzione di aggiornamento, io uso gli script di cambiamento. Ma I uso hibernate.hbm2ddl.auto=validate
e sono felice con lui.