Java 保持对层次对象的更改持久化的好模式是什么?
假设我们有一个类似的对象层次结构,如下所示,Java 保持对层次对象的更改持久化的好模式是什么?,java,spring,design-patterns,serialization,Java,Spring,Design Patterns,Serialization,假设我们有一个类似的对象层次结构,如下所示,用户有一组配置文件,每个配置文件都有一组设置 class User { private final List<Profile> profiles; } class Profile { private final List<String> settings; } 类用户{ 私人最终名单简介; } 班级简介{ 私人最终名单设置; } 确保对上述对象所做的任何更改也持久化到磁盘的好方法是什么?假设配置文件可能很大,我
用户
有一组配置文件
,每个配置文件都有一组设置
class User {
private final List<Profile> profiles;
}
class Profile {
private final List<String> settings;
}
类用户{
私人最终名单简介;
}
班级简介{
私人最终名单设置;
}
确保对上述对象所做的任何更改也持久化到磁盘的好方法是什么?假设配置文件
可能很大,我希望避免将整个用户
保存在配置文件
中进行修改
请注意,这是一个设计问题,而不是选择正确的对象序列化库的问题
确保对上述对象所做的任何更改也会持久化到磁盘
若你们谈论的是设计,那个么简单的答案就是让用户成为聚合根,并让用户保持它所拥有的对象层次结构的一致性
避免将整个用户持久化,以便在配置文件中进行修改
在这种情况下,听起来您需要事件源。
简而言之,您需要存储对配置文件/设置所做的更改。并在加载用户时,从事件流(事实)中重构配置文件/设置,这是迄今为止所做的更改
花点时间看看这个:
您是否考虑过只存储上次同步后的差异?你甚至可以重放更改。还有一种叫做结构共享的东西——也许这个想法可以帮助你