我需要创建一个由调度程序定期运行的应用程序。
从运行到运行,我需要记住以前操作的结果——它们是否成功完成,电子邮件是否发送等等。
只能保存最后一次操作发生的计数器和日期。
临:
- 它可以很容易地被人类阅读。
反对:
- 它需要额外的努力来转换为类结构。
我认为可以使用序列化——在这种情况下,我已经收到了课程,所以如果将来需要保留一些额外的信息,我只需要重新制作课程,而不是保存系统。
是否可以结合这两个系统的优点?
我需要创建一个由调度程序定期运行的应用程序。
从运行到运行,我需要记住以前操作的结果——它们是否成功完成,电子邮件是否发送等等。
只能保存最后一次操作发生的计数器和日期。
临:
反对:
我认为可以使用序列化——在这种情况下,我已经收到了课程,所以如果将来需要保留一些额外的信息,我只需要重新制作课程,而不是保存系统。
是否可以结合这两个系统的优点?
它需要额外的努力来转换为类结构。
这不应该增加真正的开销。所以如果你的系统足够小,我会推荐这个版本。
如果它真的很复杂,请使用带有 ORM(或 NoSQL 或您喜欢的任何东西)的数据库。我认为这将结合这两个选项的优点。
如果您可以将先前操作的结果包装到一个对象中,我建议您使用XStream将其序列化为 XML(或 JSON) 。这是迄今为止我用过的将 Java 对象序列化为平面文件的最简单方法。特别是如果您使用注释:http: //x-stream.github.io/annotations-tutorial.html
只能保存最后一次操作发生的计数器和日期。
应该很容易从文件中读取这两个并用它们实例化一个对象。如果你序列化,你应该记住,如果你的类已经改变,你不能反序列化。因此,您应该使用 xml。您还可以使用这些信息转储和读取 json 文件,这也是可读的并且开销较小。
我会看一下我最了解的解决方案,但我不会使用普通的 Java 序列化。
取决于您对结果对象的要求:
如果您将其转换为包含 JSON 或 XML 的文件,那么您可以与非基于 Java 的应用程序共享此对象,并且可以轻松地通过网络传输它们。
如果您使用 java 序列化来序列化结果对象,那么它的客户端只能是基于 java 的应用程序,但它们将比第一个选项更容易共享和传输并且速度更快。
当然,这两种方法都有其权衡,因此您需要根据应用程序的要求进行选择。