Se stai solo imparando, ti consiglio di mettere da un lato i dettagli della distribuzione e supporre che il database sarà sempre lì e sarà sempre nel formato corretto. Una volta che hai portato la tua applicazione in uno stato in cui ne sei ragionevolmente soddisfatto, allora puoi rispondere alle tue preoccupazioni riguardo al database.
Quando riesci a risolvere questi problemi, un approccio generale sarebbe che la tua applicazione avesse uno script di impostazione del database, questo sarà un insieme di istruzioni SQL per la creazione di tabelle, indici, permessi ecc. Supponendo che tu sia utilizzando JDBC, le impostazioni dell'applicazione devono specificare i dettagli della connessione JDBC (ad esempio, URL JDBC, nome utente e password). La tua applicazione dovrebbe connettersi a questa fonte e quindi eseguire lo script di installazione.
Un avvertimento con lo script di installazione è che dovrebbe funzionare indipendentemente dallo stato del database. Supponiamo di avere molte dichiarazioni del modulo
CREATE TABLE FOO (id int....)
Se la tabella FOO esiste già, riceverai una SQLException che dovrai catturare e ignorare (ma solo per il caso specifico in cui esiste la tabella, non puoi ignorare altri errori).
Supponiamo che una versione successiva della tua applicazione abbia bisogno di una definizione leggermente diversa di FOO. In tal caso, non puoi semplicemente modificare l'istruzione CREATE, devi mantenere la tua istruzione CREATE originale seguita da alcune istruzioni ALTER.
Questo approccio presuppone che la tua applicazione possa connettersi all'origine dati JDBC. Se si prevede che la propria applicazione utilizzi un DBMS standalone come MySQL, Postgres, Oracle, SQL Server ecc., Prenderemo in considerazione l'installazione del DBMS come responsabilità dell'utente della propria applicazione. L'utente dovrà anche capire che cosa dovrebbe essere l'URL JDBC e fornirlo alla tua applicazione.
Se si desidera evitare che l'utente debba installare un DBMS, è possibile incorporare un DBMS Java puro con l'applicazione. JavaDB (AKA Derby) è un esempio, HSQLDB e H2 possono anche essere usati in questo modo. Per prendere Derby come esempio, è necessario includere le librerie derby (jar) con l'applicazione e l'applicazione dovrebbe creare il database all'avvio. Se stai utilizzando Derby in "modalità incorporata", il tuo URL sarà simile a:
jdbc: derby: / home / fred / myapplicationdb
Per quanto mi ricordi, la libreria Derby creerà il database se non esiste.