Java 视频游戏预订数据存储

Java 视频游戏预订数据存储,java,Java,分配的作业问题需要一个函数来存储用户选择的视频游戏。这是一个小的学校项目,我想知道存储信息的最佳方式是什么。该程序必须访问视频游戏预订,但我认为对于这样一个小任务来说,数据库有点言过其实 你会怎么做?通常,对于小型学校项目,我会发明自己的平面文件格式 通常它是一个简单的类似CSV的文件,带有某种类型的键值对 根据您需要保存XML的信息类型,可能是一种方法 此外,如果信息只需要保存很短的时间(应用程序的一次运行),并且保存的数据量相对较小,那么简单地将所有信息都保存在内存中肯定会使程序更快,并且通

分配的作业问题需要一个函数来存储用户选择的视频游戏。这是一个小的学校项目,我想知道存储信息的最佳方式是什么。该程序必须访问视频游戏预订,但我认为对于这样一个小任务来说,数据库有点言过其实


你会怎么做?

通常,对于小型学校项目,我会发明自己的平面文件格式

通常它是一个简单的类似CSV的文件,带有某种类型的键值对

根据您需要保存XML的信息类型,可能是一种方法


此外,如果信息只需要保存很短的时间(应用程序的一次运行),并且保存的数据量相对较小,那么简单地将所有信息都保存在内存中肯定会使程序更快,并且通常更易于编写。

Kai说得对,虽然管理视频游戏“预订”信息的一个好方法仍然是一个小数据库(试试sqlite)。我确信您希望将预订信息与用户相关联,因此任何类型的关系都可以证明使用数据库是合理的。

这取决于您所谈论的数据类型、数据量、访问和显示数据的方式以及您是否需要对数据进行进一步的查询和分析


我会说CSV或SQLite。

如果您更具体一点,可能会有所帮助,但是

我认为这个任务试图让你明白,程序在运行之前不会知道数据类型和数据大小(行和列)

根据你告诉我的,我会尝试通过可变列表来建模一个表。对其进行常规编程,以便可以交换实现:

列表>表格=新阵列列表>()

这只是电子游戏吗?如果是这样,我将创建一个视频游戏对象,存储诸如名称、制作人、系统等字段,并将其放入一个可变的数据结构中!这完全取决于您将在列表上执行的操作……您是否正在搜索和排序?你关心检索时间吗

如果你想检索为O(1),或者用不准确的外行术语,“关于一个指令”,考虑使用地图。如果键是视频游戏的名称,它将以O(1)的形式返回。如果有多个条目,请考虑使用列表作为值。 我希望这不是太长和混乱,但请指定字段的数量是已知的还是必须是完全通用的。如果它必须是完全通用的,只需使用数据库!它是通用的…或者如果你真的不想这样做,使用我描述的第一种方法


希望有帮助。

我认为最简单的解决方案是序列化保存数据的对象,然后写入磁盘(选择任何让您满意的文件扩展名)。只需读取文件,您就可以取回您的对象

FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
Foo f = (Foo)in.readObject();

这是一本关于整个过程的入门书:

创建自己的文本文件(CSV等)
优点:易于编辑
缺点:你必须自己做所有的编组工作。并组成文件格式。您可能最终会得到一个写得很糟糕的数据库。如果换东西做得不好,可能会很痛苦

序列化对象(二进制或XML格式)
赞成:还有其他方法处理编组(如果使用“bean”,则内置二进制和XML)
缺点:在Java版本之间更改可能会破坏二进制格式的序列化。XML需要bean

自定义XML文件
Pro:XML在Java中得到了很好的支持
缺点:你可能会被现有的编组API和自己的(使用人们希望的JavaXMLAPI)所吓倒。然后,您将与文本文件(一个写得不好的数据库)位于同一个空间

嵌入式数据库
赞成:SQL很性感。
缺点:除非您已经知道SQL和/或正在使用ORM产品,否则ORM可能有点麻烦


我可能会选择嵌入式数据库+JPA

这是一个上下文敏感的问题,几乎总是取决于您试图存储的特定数据。虽然各种文本文件可能都可以工作,但我认为使用DB所需的额外工作很少,我会这样做。HSQLDB和SQLite非常容易设置和使用;我还建议使用数据库。如果你在这个项目中使用平面文件,你可能最终会实现类似于数据库的东西,每个表都有一个平面文件——你不会有数据库提供的好的API和查询功能。我是jjnguy的。这只是一个学校项目,OP是正确的,因为使用数据库是过分的;平面文件非常适合做这种事情。你可能也想去伯克利DB看看这类东西;你可以使用它将你的对象序列化成一个持久的映射。序列化很容易让你未来的生活变得困难。诚然,这根本不是一个“真正的”解决方案,但它对有限的生命周期项目(阅读:学校项目)非常有效。为什么使用序列化会让事情变得困难?