在 Java 应用程序中保存数据的最佳方式是啥?
Posted
技术标签:
【中文标题】在 Java 应用程序中保存数据的最佳方式是啥?【英文标题】: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,我还没有找到任何好的库。
【问题讨论】:
【参考方案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 数据时感觉很虚弱。以上是关于在 Java 应用程序中保存数据的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Wear OS(即 CSV)上保存和传输智能手表传感器数据的最佳方式是啥?
c# 在 c# 应用程序中保存配置数据的最佳方法是啥。 [复制]