【问题标题】:Best way to save data in a Java application?在 Java 应用程序中保存数据的最佳方式是什么?
【发布时间】:2010-10-05 12:40:57
【问题描述】:

我正在尝试找到保存简单应用程序状态的最佳方法。 从数据库的角度来看,有 4/5 的表带有日期字段和关系。

因为应用程序很简单,并且我希望用户可以选择移动数据(usb pen、dropbox 等),所以我想将所有数据放在一个文件中。

执行此操作的最佳方式/lib 是什么?

XML 通常是最好的格式(可读性和开放性),但是如果不使用 SAX/DOM,我还没有找到任何好的库。

【问题讨论】:

    标签: java database settings state


    【解决方案1】:

    如果您想使用 XML,请查看 XStream 以将 Java 对象简单地序列化为 XML。这里是"Two minute tutorial"

    如果您想要一些简单的东西,标准的Java Properties format 也可以是存储/加载一些小数据的一种方式。

    【讨论】:

    • java.util.Properties 也可以处理 XML。
    • XStream 似乎正是我想要的。您知道可用于优化此库中的写作的任何代码吗?我不应该在每次更改时都写入磁盘。
    • 开始写作完全取决于您。 XStream 不会为您进行任何自动保存。
    • 如果您正在寻找一个比我使用 XStream 的 Xpp3 更快的 XML 解析器。它超级快速高效。
    【解决方案2】:

    考虑使用 JDK 附带的普通 JAXB 注释:

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

    这里有一个blog-post of mine,它提供了有关 JAXB 这种简单用法的更多详细信息(它还提到了一种更“优雅”的基于 JAXB 的方法——以防您需要更好地控制 XML 模式,例如,以保证向后兼容性)

    【讨论】:

    • 与 XStream 有什么区别?
    【解决方案3】:

    您可能会考虑的其他 2 个选项 -

    • hsqldb 是一个小的 sql db 写在 爪哇。更适合您的 目的,它可以配置为 只需按原样写入 csv 文件 数据存储,所以你可以想象 使用它的文本输出作为便携式 数据存储并仍然使用 sql,如果 这就是你喜欢的。
    • 第二种选择可能是编写 数据存储直接到序列化 直接或通过文件 像prevayler这样的图书馆。很好 性能和易于实施, 缺点是脆弱性和不透明性 格式。

    但如果数据足够小,xml可能就少了很多麻烦。

    【讨论】:

      【解决方案4】:

      如果您不需要为数据提供语义含义,那么 XML 可能是一个错误的选择。我建议使用无脂肪替代品JSON,它更自然地为数据结构构建。

      【讨论】:

      • JSON 对反序列化很不利。没有强类型意味着您需要了解数据结构。几乎没有破坏游戏规则,但当我尝试使用它来保留 Java 数据时感觉很虚弱。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2013-05-29
      相关资源
      最近更新 更多