现在,如果涉及复杂的聚合根,我无法获得Spring Data REST背后的概念.如果我正确理解域驱动设计(这是AFAIK弹簧数据的基本原理吗?),那么只能通过存储库公开聚合根.
比方说,我有两个类Post和Comment.两者都是实体,Post有一个@OneToMany List<Comment> comments.
因为Post显然是聚合根我想通过一个访问它PostRepository.如果我创建@RepositoryRestResource public interface PostRepository extends CrudRepository<Post, Long>REST访问Post工作正常.
现在comments是内联渲染,不作为子资源公开/posts/{post}/comments.只有当我引入一个CommentRepository(如果我想坚持使用DDD时我不应该这样做),就会发生这种情况.
那么如何在复杂的域对象中正确使用Spring Data REST?假设你必须检查所有注释都不包含超过X个字符.这显然是Post聚合根处理的一些不变量.你会把逻辑放在哪里Post.addComment()?如何将其他类公开为子资源,以便我可以在/posts/{post}/comments/{comment}不引入不必要的存储库的情况下访问?