2009-02-04 6 views
8

Ich versuche, den besten Weg zu finden, den Zustand einer einfachen Anwendung zu speichern. Aus Sicht des DBs gibt es 4/5 Tabellen mit Datumsfeldern und Beziehungen, die vom Kurs abweichen.Die beste Methode zum Speichern von Daten in einer Java-Anwendung?

Da die App einfach ist, und ich möchte, dass der Benutzer die Möglichkeit hat, die Daten zu bewegen (USB-Stift, Dropbox, etc.), wollte ich alle Daten in einer einzigen Datei ablegen.

Was ist der beste Weg/lib, dies zu tun?

XML in der Regel ist das beste Format für diese (Lesbarkeit & Offenheit), aber ich habe keine große lib dafür ohne SAX zu tun/DOM gefunden.

Antwort

11

Wenn Sie XML verwenden, einen Blick auf XStream für einfache Serialisierung von Java-Objekte in XML nehmen. Hier ist "Two minute tutorial".

Wenn Sie etwas wollen, einfach, Standard Java Properties format kann auch ein Weg sein, einige kleine Daten zu speichern/laden.

+1

java.util.Properties auch XML. –

+0

XStream scheint genau das zu sein, was ich gesucht habe. Kennen Sie irgendeinen verfügbaren Code, um Schriften in dieser Bibliothek zu optimieren? Ich sollte nicht bei jeder Änderung auf die Festplatte schreiben. – fabiopedrosa

+0

Es liegt ganz bei Ihnen, das Schreiben zu initiieren. XStream führt kein automatisches Speichern für Sie durch. –

0

2 weitere Optionen, die Sie interessieren könnten -

  • HSQLDB ist eine kleine SQL-Datenbank in Java geschrieben. Relevanter für Ihre Zwecke, kann sie einfach in eine CSV-Datei schreiben zu konfiguriert sein, wie es Datenspeicher ist, so könnte man denkbar es verwenden, Textausgabe als tragbares Datenspeicher ist und nach wie vor SQL verwenden, wenn das ist, was Sie bevorzugen .
  • Eine zweite Möglichkeit könnte sein, den Datenspeicher direkt in eine serialisierte Datei zu schreiben, entweder direkt oder über eine Bibliothek wie prevayler. Sehr gut Leistung und einfach zu implementieren, Nachteile sind die Zerbrechlichkeit und Opazität von das Format.

Aber wenn die Daten klein genug ist, xml ist weniger wahrscheinlich viel Mühe.

1

betrachten Ebene JAXB Annotationen, das mit dem JDK kommen:

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

hier ist ein blog-post of mine, die mehr Details zu dieser einfachen Nutzung von JAXB (es mentiones einen „noble“ JAXB-basierten Ansatz auch gibt - falls Sie eine bessere Kontrolle über Ihr XML-Schema benötigen, zB um Abwärtskompatibilität zu gewährleisten)

+0

Was ist der Unterschied zu XStream? – lony

0

Wenn Sie Ihren Daten keine semantische Bedeutung geben müssen, dann ist XML wahrscheinlich die falsche Wahl. Ich würde empfehlen, die fettfreie Alternative JSON zu verwenden, die viel natürlicher für Datenstrukturen gebaut wird.

+0

JSON tut weh zu deserialize. Kein starkes Tippen bedeutet, dass Sie die Datenstruktur kennen müssen.Kaum ein Game-Breaker, aber ich fühlte mich schwach, als ich es für die Java-Datenspeicherung ausprobierte. – Tim

Verwandte Themen