Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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 如何在DDD中嵌套实体_Java_Jakarta Ee_Domain Driven Design - Fatal编程技术网

Java 如何在DDD中嵌套实体

Java 如何在DDD中嵌套实体,java,jakarta-ee,domain-driven-design,Java,Jakarta Ee,Domain Driven Design,我将使用StudentDriver作为聚合根。每个学生驾驶员可能有多个驾驶日志,每个驾驶日志可能有多个驾驶记录 因为他们彼此相连,我认为这是对的。然而,我不明白如果我要添加一个新的驾驶记录,例如。我是调用studentdriver.addNewDrivingRecordToDrivingLog(…),还是先从用户那里获取一个驱动日志,然后再将驱动记录添加到该日志中。我的意思是,方法名越来越长,我不明白应该如何访问元素 有人能解释一下你应该如何与StudentDriver的成员互动,即使这个聚合是

我将使用StudentDriver作为聚合根。每个学生驾驶员可能有多个驾驶日志,每个驾驶日志可能有多个驾驶记录

因为他们彼此相连,我认为这是对的。然而,我不明白如果我要添加一个新的驾驶记录,例如。我是调用studentdriver.addNewDrivingRecordToDrivingLog(…),还是先从用户那里获取一个驱动日志,然后再将驱动记录添加到该日志中。我的意思是,方法名越来越长,我不明白应该如何访问元素

有人能解释一下你应该如何与StudentDriver的成员互动,即使这个聚合是正确的吗

我是调用studentdriver.addNewDrivingRecordToDrivingLog(…),还是先从用户那里获取一个驱动日志,然后再将驱动记录添加到该日志中。我的意思是,方法名越来越长,我不明白应该如何访问元素


看起来获取DrivingLog实例,然后向其中添加记录会更好,但这似乎是您应该自己解决的问题之一,因为我们对您的域了解不够。这两种方法都不违反任何DDD规则。如果您不喜欢,请尝试一个,稍后再进行更改(例如,代码气味、测试困难等)。DDD代码应该随着您对该领域的理解而不断改进。在这种情况下真的没有对错。

因此,只要其他聚合根没有实体,那么在聚合根中获取实体等也没有什么错?比如,将实体放在聚合根之外并不坏?我的意思是,既然StudentDriver是聚合根,那么在StudentDriver之外构建驱动日志并直接在驱动日志上添加驱动记录,然后在通过存储库将驱动日志持久化之前将驱动日志附加到用户身上也不坏?拥有聚合并不意味着您仍然无法访问其中的内容?最后一件事:例如,当您向studentdriver添加驱动日志时,您需要更新存储库中的studentdriver,对吗?您没有自己的聚合实体存储库吗?因此,每当studentdriver聚合中的某些内容发生更改时,您必须“更新”studentdriver?谢谢您。我买了一本DDD的书,除了第二章我还没拿到更多。它教你这些东西吗?是的。但我发现,有一个具体的问题并在书中寻找答案比仅仅从封面上阅读并放在书架上更有用。你最终需要把它全部读一遍,甚至可能不止一次。