Domanda

Sto cercando una soluzione generale per l'aggiornamento dello schema di database con strumenti ORM, come JPOX o di Sospensione.Come si fa a farlo nei tuoi progetti?

La prima soluzione che mi viene in mente è di creare il mio proprio meccanismo per aggiornare i database di SQL script che fa tutto il lavoro.Ma in questo caso dovrò ricordare circa la creazione di nuovi script ogni volta che l'oggetto di mapping sono aggiornati.E io ancora a che fare con basso livello di query SQL, invece di definire il mapping e permettendo che gli strumenti ORM per fare tutto il lavoro...

Quindi la domanda è come farlo correttamente.Forse alcuni strumenti consentono di semplificare questo compito (per esempio, ho sentito che le Guide hanno un meccanismo tale built-in), se è così, si prega di aiutarmi a decidere quale strumento ORM a scegliere per il mio prossimo progetto Java.

È stato utile?

Soluzione

LiquiBase interessante è una libreria open source per la gestione di database rifattorizzazione (aggiornamenti).Non ho usato, ma sarà sicuramente dare una prova sul mio prossimo progetto in cui ho la necessità di aggiornare un db schema.

Altri suggerimenti

Non vedo perché ORM generato gli schemi sono diversi da altri DB schemas - il problema è lo stesso.Supponendo che il tuo ORM sarà sputare fuori una generazione di script, è possibile utilizzare uno strumento esterno per fare il diff

Non ho provato, ma google è tornato con SQLCompare come una opzione - sono sicuro che ci sono altri.

Siamo in mano il codice SQL script di aggiornamento e strappiamo lo schema e ricostruire applicando gli script di aggiornamento, come parte del nostro continuo processo di generazione.Se uno qualsiasi di sospensione mapping non corrispondono allo schema, non sarà la generazione.

DbMaintain può anche aiutare qui.

È possibile controllare questo confronto delle funzionalità di alcune schema del database strumenti di aggiornamento.

Un confronto tra il numero di domande a SEMINARE di alcuni di questi strumenti:

Penso che la cosa migliore è usare un ORM-strumento che include la migrazione di database come Subsonico:

http://subsonicproject.com/2-1-pakala/subsonic-using-migrations/

Abbiamo finito per fare gli script di aggiornamento ogni volta che abbiamo cambiato il database.Quindi c'è uno script dalla versione 10 alle 11 dalle 11 alle 12, ecc..Quindi siamo in grado di eseguire qualsiasi serie consecutiva di script per passare da una versione alla nuova versione.Abbiamo memorizzato la versione esistente nel database in modo che abbiamo potuto rilevare questo momento di avvio.

Sì, questo coinvolti specifiche del database di codice!Uno dei principali problemi con l'Ibernazione!

Quando si lavora con Hibernate, io uso un programma di installazione, classe che viene eseguito dalla riga di comando e dispone di opzioni per la creazione dello schema del database, inserimento dati di base, e in modo dinamico l'aggiornamento dello schema del database utilizzando SchemaUpdate.Trovo che sia estremamente utile.Mi dà anche un posto per mettere il one-off script che verrà eseguito quando una nuova versione viene avviato, ad esempio, inserire un nuovo campo in una tabella DB.

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