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)聚合表示一个完整的概念,要么全有,要么全无,您无法选择想要的实现细节。