View Full Version : [Java] Includere database in applicazione java
ciao ragazzi
solitamente per i db in java utilizzo un server mysql locale a cui accedo con i relativi driver mysql, adesso però vorrei che tutto il mio db fosse salvato in un file, da portarmi dietro insieme al file .jar principale del programma, e a cui posso accedere senza necessità di avere installato alcun programma o libreria nel sistema (a parte il jre ovviamente).. Come potrei fare?:D
grazie mille
ciao ragazzi
solitamente per i db in java utilizzo un server mysql locale a cui accedo con i relativi driver mysql, adesso però vorrei che tutto il mio db fosse salvato in un file, da portarmi dietro insieme al file .jar principale del programma, e a cui posso accedere senza necessità di avere installato alcun programma o libreria nel sistema (a parte il jre ovviamente).. Come potrei fare?:D
grazie mille
...prima domanda...dimensione e tabelle del db che vorresti portarti dietro?...query da eseguire?...
...ciao Andrea...
...prima domanda...dimensione e tabelle del db che vorresti portarti dietro?...query da eseguire?...
...ciao Andrea...
grazie per la risposta,
allora è un piccolo db per la rendicontazione delle spese, quindi non credo sia molto grande, non dovrebbe superare le tre tabelle e come numero di valori non saprei.. credo molti... lo chiedi perchè stavi pensando a un db formato xml?
grazie per la risposta,
allora è un piccolo db per la rendicontazione delle spese, quindi non credo sia molto grande, non dovrebbe superare le tre tabelle e come numero di valori non saprei.. credo molti... lo chiedi perchè stavi pensando a un db formato xml?
...puoi puntare su derby ormai integrato in java...su xml o qualsiasi altra soluzione custom...anche un file di testo va bene...sempre che le query e i dati non siano eccessivi...non saprei quantificare ma a naso tre tabelle da 10k righe con 6/7 colonne penso siano digeribili...mooolto a naso...
...ciao Andrea...
...puoi puntare su derby ormai integrato in java...su xml o qualsiasi altra soluzione custom...anche un file di testo va bene...sempre che le query e i dati non siano eccessivi...non saprei quantificare ma a naso tre tabelle da 10k righe con 6/7 colonne penso siano digeribili...mooolto a naso...
...ciao Andrea...
grazie :)
ok mi guardo un pò di derby allora.. quindi con lui posso includere tutte le sue librerie e jar nel mio pacchetto giusto? (gli ho dato uno sguardo veloce)
Dai un'occhiata anche qui http://www.h2database.com (http://www.h2database.com/html/main.html), il db sta su un comodissimo file.
Dai un'occhiata anche qui http://www.h2database.com (http://www.h2database.com/html/main.html), il db sta su un comodissimo file.
interessante :)
ma provandolo un pochino lui crea un file .db a cui si accede con il driver.. e fin qui va bene..
ma se io faccio il db vuoto e poi impacchetto la applicazione così:
Applicazione.jar
manifest....
lib/...
....
miodb.db
accedendo alla mia applicazione aggiungo dei campi dentro al db.. crea problemi se è salvato in un jar? quello che mi preoccupa è il fatto della grandezza, perchè teoricamente se cambio un file dentro un jar lo devo ricreare... come si può fare?
PuNkEtTaRo
20-08-2010, 09:41
Io, quando ho di queste necessità, uso SQLite, in particolare, la versione fornita da Zentus. Importi il file jar ed il gioco è fatto!
anonimizzato
20-08-2010, 10:02
Mi accodo alla discussione perchè sono interessato.
Se volessi "embeddare" un piccolo DB all'interno di una web application in Spring come dovrei procedere?
Utilizzo Netbeans è ho già provato a vedere il DB "sample" con Derby nel pannello Services ma vorrei capire come fare per inglobarlo all'interno del pacchetto WAR per il successivo deploy.
Adesso per la persistenza dei dati uso un Server MySQL sulla stessa macchina ma mi allettava la cosa per poter avere un'applicazione completamente portabile sia per il codice del software sia per il DB.
Grazie.
anonimizzato
20-08-2010, 11:06
edit.
PuNkEtTaRo
20-08-2010, 11:15
Ciao ho visto che con Derby è possibile gestire solo una connesione alla volta nel momento in cui lo si embedda all'interno della propria applicazione.
Sapresti darmi qualche indicazioni in più sull'embed di SQLite?
Tnx.
Più lettori possono leggere contemporaneamente, non so se ci sia un limite massimo, comunque non lo conosco!
Per quanto riguarda le scritture contemporanee, immagino che la storia sia differente, magari ci sarà una coda per gestire le varie scritture.
Non ho chissà quale esperienza su SQLite, mi è capitato solo di doverlo usare in un paio di progetti!
Ciao
anonimizzato
20-08-2010, 12:05
Più lettori possono leggere contemporaneamente, non so se ci sia un limite massimo, comunque non lo conosco!
Per quanto riguarda le scritture contemporanee, immagino che la storia sia differente, magari ci sarà una coda per gestire le varie scritture.
Non ho chissà quale esperienza su SQLite, mi è capitato solo di doverlo usare in un paio di progetti!
Ciao
Si scusami ho editato perchè avevo letto alcun cose.
Ma, in sostanza, per effetturae l'embedding del DB come si procede.
Tu con SQLite cosa fai di preciso?
Ho scaricato il JAR con il JDBC Driver di Zentus ma poi ...?
Bisogna anche scaricare SQLite oppure è già tutto in quel JAR.
Scusa l'ignoranza.
PuNkEtTaRo
20-08-2010, 12:39
Si scusami ho editato perchè avevo letto alcun cose.
Ma, in sostanza, per effetturae l'embedding del DB come si procede.
Tu con SQLite cosa fai di preciso?
Ho scaricato il JAR con il JDBC Driver di Zentus ma poi ...?
Bisogna anche scaricare SQLite oppure è già tutto in quel JAR.
Scusa l'ignoranza.
E' tutto nel jar. Usi un ide per sviluppare? Con eclipse non devi fare altro che importare il jar nel build path del progetto. Finito!
anonimizzato
20-08-2010, 13:39
E' tutto nel jar. Usi un ide per sviluppare? Con eclipse non devi fare altro che importare il jar nel build path del progetto. Finito!
Uso Netbeans, ho importato il JAR tra le libraries del progetto e sono riuscito a creare il DB.
Tnx.
ho provato ora con sqlite ed è fantastico, per quello che devo fare io è perfetto ;)
per infomazione di tutti crea il db nella stessa cartella dove è presente il file .jar :)
grazie veramente a tutti, più in là quando avrò tempo approfondiro il discorso di derby e h2, più che altro visto che dovrò studiare la teoria anche sui db :asd:
una domanda, conviene aprire una connessione ogni volta che il programma richiede una query oppure mantenerla aperta per tutto il tempo in cui il programma resta in esecuzione? :)
anonimizzato
21-08-2010, 17:06
Dipende forse da quante volte accedi al DB nell'uso del tuo software.
Se l'interazione col DB è costante tanto vale, credo, aprire la connessione allo startup dell'applicazione ed interromperla una volta chiuso il programma.
Dipende forse da quante volte accedi al DB nell'uso del tuo software.
Se l'interazione col DB è costante tanto vale, credo, aprire la connessione allo startup dell'applicazione ed interromperla una volta chiuso il programma.
si pensavo anceh io così :)
perfetto, grazie a tutti !
Tnerla aperta non ha molto senso, anzi potrebbe essere pure peggio, settati a modo un connection pool più che altro http://docs.sun.com/app/docs/doc/819-3681/abehq?a=view
anonimizzato
22-08-2010, 11:57
Tnerla aperta non ha molto senso, anzi potrebbe essere pure peggio, settati a modo un connection pool più che altro http://docs.sun.com/app/docs/doc/819-3681/abehq?a=view
Perdona l'ignoranza ma se il programma lavora solo con una connessione al DB che senso ha una coonection pool?
Perdona l'ignoranza ma se il programma lavora solo con una connessione al DB che senso ha una coonection pool?
Bhe un connection pool lo puoi usare lo stesso, anche se è sempre la stessa connessione ad essere richiesta.
Comunque ora non ricordo bene, ma mi pare che un timeout "infinito" non si può nemmeno dare se non sbaglio.
anonimizzato
22-08-2010, 17:21
Comunque ora non ricordo bene, ma mi pare che un timeout "infinito" non si può nemmeno dare se non sbaglio.
Si possibile ma nel qual caso allora basta "istanziare" una nuova connessione laddove non ve ne sia una già attiva quando fai una chiamata del tipo: "getConnection()".
Altrimenti aprire e chiudere una connessiona ad ogni query rischia, credo, di occupare più risorse che tenerne aperta una anche se momentaneamente inutilizzata.
Ovviamente è solo una mia ipotesi.
Una coonection pool torna utile nel caso siano più client che possano accedere al DB, se non erro.
Bye.
mah credo che una connessione alla volta possa bastare a sto punto...
ho fatto qualche previsione e alla fine essendo un programma di sola rendicontazione lui effettua una query e poi l'utente passa comunque del tempo a analizzare i risultati....
l'unica cosa potrei mettere un time out quando si fanno query di inserimento, visto che può capitare di inserire 10 campi per volta, per non aprire ogni volta una connessione, potrei settare un timeout, dopo il quale la chiude automaticamente.. grazie ragazzi :D
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.