我有一个应用程序,它使用大约15,000个Java对象的数据库,每当应用程序启动时,我都要读取这些对象。最初,我一直使用JSON来存储数据,但这有一些问题,主要是速度慢(读取我的低端机器上的所有对象可能需要8-10秒),而且数据库中的对象有指向同一个对象的字段也是非常常见的。Java序列化通过使用对同一个对象的引用来处理这个问题,而使用JSON,我只需编写每个对象的状态,然后在读取过程中对它们进行实习。这也会增大文件的大小。
此数据库的内容将很少更新(可能每月大约更新一次)。我从几乎所有的源代码中都听说,Java序列化对于长期存储来说总是一个糟糕的选择,我理解其中的原因。但是,在这些情况下,这里是否有充分的理由不使用Java序列化?
发布于 2014-09-29 20:51:21
发布于 2014-09-29 21:13:26
我不会长期存储序列化对象。正如其他人已经说过的那样:当您更改类上的一点点内容时(可能您甚至没有注意到),也许您无法加载数据。修好它就太糟了。
我不知道,为什么你需要内存中的所有数据。是吗,因为它在您的软件(主数据)中随时随地都被使用吗?看上去像是“是”
我要做的是:将数据存储在内存数据库中(hsqldb,.)在启动后,将文件转储并在机器上提供文件,我将加载该文件(相当快),然后像使用“普通”数据库一样使用它。
您也可以通过序列化对象来完成这一任务。但我不会再看到任何感觉了。“正常”数据库可以被缓存,并且会非常快。所以查询对象。
发布于 2014-09-30 02:07:25
我同意这样的意见,即Java序列化是不稳定的,而且随着类的改变很难维护。我建议将您自己的读/写例程编写成一种人类可以理解并且可以手动编辑的格式(如果需要的话)。您可能可以将其打包为静态数据,这些数据将主要由编译器解析到您的运行时数据结构中。
https://softwareengineering.stackexchange.com/questions/257588
复制相似问题