4

我目前正在用 java 开发一个桌面应用程序,它存储用户数据,例如 ftp 服务器的书签。在决定如何保存这些信息时,我最终使用了 xml,仅仅是因为我喜欢xpath的工作方式。我也在考虑json,它似乎更轻量级。

在 Java 桌面应用程序中存储数据的首选方式是什么(通常),为什么?java-persistence怎么样,有什么值得注意的优点吗?用户数据的大小有多重要?并非总是可以将数据存储在数据库中(或者更可取),并且根据我的经验,xml 不能很好地扩展。让我知道你的想法!

还没有人提到 json,这让我很惊讶。没有适合的情况?

4

6 回答 6

5

无论工作如何,都能为您提供良好的性能并且需要最少的代码。

Java 序列化很容易。除非您有大对象图,否则应该很快。如果您想与另一种语言互操作或希望文件是人类可读/可编辑的,它可能不起作用。它可能很脆。

XML解决了多语言互操作,可以被人类阅读和编辑。如果您使用 Java,Jaxb 非常非常简单和直接。如果您需要存储大量设置,则可能需要 SAX/StAX。您可能想在非常奇怪的情况下使用 DOM/JDom。

如果您要存储和查询大量设置,则可以选择嵌入式 SQL 数据库。我推荐H2。

于 2010-06-03T20:20:50.483 回答
5

有时,只需使用属性文件就足够了。

属性文件是由键/值对组成的文本文件。该类java.util.Properties用于与属性文件交互。但是,它不适合存储事物列表,因为一切都是键/值对。

于 2010-06-03T20:23:29.793 回答
2

没有办法说我更喜欢“一般”。即使在单个应用程序中,我也可能有几种不同的方法来序列化用户数据。以电脑游戏为例。我希望存储我的游戏偏好,以便我可以使用文本编辑器对其进行编辑。我希望存储我的许可数据,以便它可以在全球范围内访问。我希望存储我的高分数据,以便没有人可以有效地对其进行编辑。我希望存储我保存的游戏状态,以便读取和写入非常快。这四种不同的要求可能会在同一个应用程序中产生四种不同的解决方案。

于 2010-06-03T20:28:37.460 回答
2

有两个方面:

  1. 如果您想使用 RDBMS 快速实现它,请使用SQLite 等嵌入式数据库。这被许多桌面应用程序(如Firefox )使用。

  2. 如果性能是一个问题,那么使用 go嵌入式键值对类型的存储解决方案。

于 2010-06-03T21:50:31.897 回答
1

无论使用何种格式构建文件,最好将文件存储在用户的主目录中:

String userHome = System.getProperty("user.home"); // "/home/myusername"
于 2010-06-03T21:06:17.513 回答
1

如果我们不介意用户调整数据,我们会使用 XML。对于更复杂的数据,我们使用 SQLite。你可以在这里找到 Java 实现,

http://sqljet.com/

于 2010-06-03T20:53:52.013 回答