对象序列化到文件的最佳实践

时间:2011-06-09 14:05:16

标签: java serialization

并非所有项目都需要数据库。 我目前正在开发的项目根本不需要任何数据库。相反,它应该使用对象序列化来存档。 这个实现会将许多对象序列化/反序列化为文件。 我的问题是,对象序列化的最佳实践是什么?

3 个答案:

答案 0 :(得分:4)

这在很大程度上取决于数据的性质,您将要写入磁盘的类有多大可能会发生变化,您是否只需要存储类的数据或其数据和代码,以及它是否应该是人类可读的

Object serialization to a file是一种技巧。将对象模型转换为结构化文本记录(CSV,XML等)是另一种方法。通常,如果文件中引用的对象必须相互引用,则需要将引用编码为与文件相关的id号,并让解码器在加载对象时重建引用。

如果您确实需要控制对象编组与存储之间的编组方式,您可以通过Externalizable接口详细控制它。请注意,一旦承担了所有责任,您将需要正确处理它。

就最佳做法而言:

  1. 为每个对象实例创建一个文件内ID。
  2. 在序列化中对对象的类型进行编码(这是在默认序列化方案中为您完成的。)
  3. 添加一个额外的字段来跟踪类的修订,因为将“旧”对象加载到其类的较新版本可能会有问题。
  4. 提供一个可以“转发”将一个已知修订的磁盘对象上的“旧”转换为当前类修订的图层。

答案 1 :(得分:3)

我会建议使用协议缓冲区,但现在我建议使用MessagePack

答案 2 :(得分:1)

我建议你看一下XStream

这是一个简单的库,可以将对象序列化为XML并返回。