Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保持对层次对象的更改持久化的好模式是什么?_Java_Spring_Design Patterns_Serialization - Fatal编程技术网

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;
}
类用户{
私人最终名单简介;
}
班级简介{
私人最终名单设置;
}
确保对上述对象所做的任何更改也持久化到磁盘的好方法是什么?假设
配置文件
可能很大,我希望避免将整个
用户
保存在
配置文件
中进行修改

请注意,这是一个设计问题,而不是选择正确的对象序列化库的问题

确保对上述对象所做的任何更改也会持久化到磁盘

若你们谈论的是设计,那个么简单的答案就是让用户成为聚合根,并让用户保持它所拥有的对象层次结构的一致性

避免将整个用户持久化,以便在配置文件中进行修改

在这种情况下,听起来您需要事件源。 简而言之,您需要存储对配置文件/设置所做的更改。并在加载用户时,从事件流(事实)中重构配置文件/设置,这是迄今为止所做的更改

花点时间看看这个:

您是否考虑过只存储上次同步后的差异?你甚至可以重放更改。还有一种叫做结构共享的东西——也许这个想法可以帮助你