2009-02-04 12 views
8

Sto cercando di trovare il modo migliore per salvare lo stato di una semplice applicazione. Da un punto di vista DB ci sono 4/5 tabelle con campi data e relazioni fuori rotta.Il modo migliore per salvare i dati in un'applicazione Java?

Poiché l'app è semplice e voglio che l'utente abbia la possibilità di spostare i dati in giro (penna usb, dropbox, ecc.), Ho voluto inserire tutti i dati in un singolo file.

Qual è il modo migliore/lib per fare questo?

XML di solito è il formato migliore per questa (leggibilità & openness), ma non ho trovato alcuna grande lib per questo senza fare SAX/DOM.

risposta

11

Se si desidera utilizzare XML, dare un'occhiata a XStream per la serializzazione semplice di oggetti Java in XML. Ecco "Two minute tutorial".

Se si desidera qualcosa di semplice, lo standard Java Properties format può essere anche un modo per memorizzare/caricare alcuni piccoli dati.

+1

java.util.Properties fa anche XML. –

+0

XStream sembra proprio quello che stavo cercando. Conosci qualche codice disponibile per ottimizzare gli scritti in questa libreria? Non dovrei scrivere su disco ad ogni cambio. – fabiopedrosa

+0

Spetta a te iniziare la scrittura. XStream non effettuerà alcun salvataggio automatico per te. –

0

2 altre opzioni si potrebbe prendere in considerazione -

  • Hsqldb è un piccolo db SQL scritto in Java . Più rilevante per i vostri scopi, può essere configurato per semplicemente scrivere in un file CSV come è archivio dati, in modo da concettualmente, potrebbe usare il suo output di testo come un portatile datastore e comunque utilizzare SQL, se questo è ciò che si preferisce .
  • Una seconda opzione potrebbe essere quella di scrivere il datastore direttamente in un file serializzato direttamente o tramite una libreria come il prevayler. Molto buone prestazioni e semplici da implementare, contro sono la fragilità e l'opacità di il formato.

Ma se i dati sono abbastanza piccoli, xml è probabilmente molto meno fastidio.

1

considerano utilizzando le annotazioni semplici JAXB che vengono con il JDK:

@XmlRootElement 
private class Foo { 
    @XmlAttribute 
    private String text = "bar"; 
} 

ecco una blog-post of mine che fornisce maggiori dettagli su questo semplice utilizzo di JAXB (è mentiones anche un approccio JAXB-based più "di classe" - nel caso abbiate bisogno di un migliore controllo sullo schema XML, ad es. per garantire la retrocompatibilità)

+0

Qual è la differenza per XStream? – lony

0

Se non è necessario fornire un significato semantico ai vostri dati, XML probabilmente è una scelta sbagliata. Consiglierei di utilizzare l'alternativa senza grassi JSON, che è molto più naturale per le strutture dati.

+0

JSON fa male a deserializzare. Nessuna tipizzazione forte significa che è necessario conoscere la struttura dei dati.Difficilmente un game breaker, ma mi sono sentito debole quando l'ho provato per la conservazione dei dati Java. – Tim

Problemi correlati