2009-02-04 24 views
8

Estoy tratando de encontrar la mejor manera de guardar el estado de una aplicación simple. Desde un punto de vista DB, hay 4/5 tablas con campos de fecha y relaciones fuera de curso.¿La mejor manera de guardar datos en una aplicación Java?

Como la aplicación es simple, y quiero que el usuario tenga la opción de mover los datos (usb pen, dropbox, etc.), quería poner todos los datos en un solo archivo.

¿Cuál es la mejor forma/lib para hacer esto?

XML generalmente es el mejor formato para esto (legibilidad &), pero no he encontrado ninguna gran lib para esto sin hacer SAX/DOM.

Respuesta

11

Si desea utilizar XML, eche un vistazo a XStream para la serialización simple de objetos Java en XML. Aquí está "Two minute tutorial".

Si quiere algo simple, el estándar Java Properties format también puede ser una manera de almacenar/cargar algunos datos pequeños. otros

+1

java.util.Properties también hace XML. –

+0

XStream parece justo lo que estaba buscando. ¿Conoces algún código disponible para optimizar las escrituras en esta lib? No debería estar escribiendo en el disco en cada cambio. – fabiopedrosa

+0

Depende totalmente de ti iniciar la escritura. XStream no hará ningún ahorro automático para usted. –

0

2 opciones que puede considerar -

  • hsqldb es una pequeña db SQL escrito en Java. Más relevante para sus propósitos, puede ser configurado para simplemente escribir en un archivo CSV, ya que es almacén de datos, por lo que posiblemente podría utilizar es la salida de texto como un portátil almacén de datos y seguir utilizando SQL, si eso es lo que usted prefiere .
  • Una segunda opción podría ser escribir el datastore directamente en un archivo serializado ya sea directamente oa través de una biblioteca como prevayler. Muy bueno rendimiento y simple de implementar, contras son la fragilidad y la opacidad del formato .

Pero si los datos son lo suficientemente pequeños, es probable que xml sea mucho menos molesto.

1

considerar el uso de anotaciones de civil JAXB que vienen con el JDK:

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

aquí hay un blog-post of mine que da más detalles sobre este simple uso de JAXB (también mentiones un enfoque más "clase" a base de JAXB - en caso de que necesite un mejor control sobre su esquema XML, p. ej. para garantizar la compatibilidad con versiones anteriores)

+0

¿Cuál es la diferencia con XStream? – lony

0

Si no necesita proporcionar un significado semántico a sus datos, XML probablemente sea una elección incorrecta. Yo recomendaría usar la alternativa JSON sin grasa, que es mucho más natural para las estructuras de datos.

+0

JSON duele para deserializar. Ninguna tipificación fuerte significa que necesita conocer la estructura de datos.Apenas fue un factor decisivo para el juego, pero me sentí débil cuando lo intenté para la retención de datos de Java. – Tim

Cuestiones relacionadas