Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.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
Spring DDD:查询聚合根的子对象_Spring_Jpa_Domain Driven Design_Aggregateroot - Fatal编程技术网

Spring DDD:查询聚合根的子对象

Spring DDD:查询聚合根的子对象,spring,jpa,domain-driven-design,aggregateroot,Spring,Jpa,Domain Driven Design,Aggregateroot,如果我理解正确的话,在域驱动设计中,只有聚合根对象的存储库。那么,对于那些根的子对象,实现分页(或访问控制过滤)的正确方法是什么呢 例如: @Entity public class Person extends AbstractPersistable<Long> { @OneToMany private List<Competence> competences = new ArrayList<>(); public void addCompet

如果我理解正确的话,在域驱动设计中,只有聚合根对象的存储库。那么,对于那些根的子对象,实现分页(或访问控制过滤)的正确方法是什么呢

例如:

@Entity
public class Person extends AbstractPersistable<Long> {

  @OneToMany
  private List<Competence> competences = new ArrayList<>();

  public void addCompetence( Competence competence ) {
     this.competences.add( competence );
  }

  public List<Competences> competences() {
     return this.competences;
  }

}
@实体
公共类Person扩展了抽象持久化{
@独身癖
私有列表权限=新ArrayList();
公共能力(能力){
本节。能力。添加(能力);
}
公开名单权限(){
返回此项。权限;
}
}

所以,如果我首先从存储库中获取person对象,然后我想将能力子集(页面)发送到我的前端?创建胜任力位置来发现个人的胜任力是没有意义的,因为它破坏了聚合根的整个概念。。。现在我已经使用了Spring数据JPA

一种流行的方法是避免使用域模型(这是一种为处理命令而优化的事务模型)进行查询。通过搜索CQR,您可以进一步了解这一点。

听起来需要定义的流程很少

哪个应用程序/应用程序的一部分需要权限分页

域模型的分页部分不属于域/业务规则的一部分。这是一个应用问题

DDD中的应用程序服务层可能就是放置这个的地方。
您可以创建一个服务来帮助您的特定应用程序显示能力分页。

您从不查询聚合根子级,因为:1)从概念上讲,AR从来没有子级,2)聚合表示一个完整的概念,要么全有,要么全无,您无法选择想要的实现细节。