我正在尝试设计一种在Java中存储持久数据的轻量级方法。我已经有了一种非常有效的方法将POJO序列化到DataOutputStreams(并返回),但我正在考虑一种确保在必要时对POJO中数据的更改进行序列化的好方法。
这是一个客户端应用程序,我试图尽可能低地保持最终可分发的大小,所以我不愿意使用任何可以引入重量级依赖的东西。现在我的可分发性几乎是10MB,我不希望它变得更大。
我考虑过DB4O,但它太重了 - 我需要一些轻松的东西。真的可能是我需要的设计模式,而不是图书馆。
有什么想法吗?
答案 0 :(得分:1)
“最轻的权重”持久性选项几乎肯定会标记某些类Serializable
并从某个固定位置读取/写入。你想要完成比这更复杂的事情吗?如果是这样,是时候捆绑hsqldb并使用ORM。
如果您的用户精通技术,或者您只是担心初始有效负载,那么有些库可以在运行时提取依赖关系,例如Grape。
答案 1 :(得分:0)
如果你已经有一个以字节为单位的压缩数据输出格式(假设你有效地坚持到DataOutputStream,我认为你有这种格式),那么一种有效且通用的技术就是使用 run-length-encoding 在前一个字节数组输出和新字节数组输出之间的差异。
注意事项: