Domanda

Sono interessato a come funziona hibernate.hbm2ddl.auto = validate in realtà e sto lottando per trovare una documentazione completa.

sistema di produzione

Abbiamo 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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top