【发布时间】:2015-01-26 10:35:53
【问题描述】:
我在 Spring Data Rest 设计相关问题的很多答案中都提到了“聚合根”和“实体”以及“值对象”。
我认为存储库等同于聚合根。
案例 1
我的问题是围绕这个,假设有 2 个实体 - User 和 UserSettings ,在数据库中表示为 2 个表,并且 UserSettings 具有指向 User 的外键 user_id。
在这种情况下,我想对 User 和 UserSettings 执行 GET/POST。从一些帖子中,我发现存储库应该处于聚合根级别,这意味着在这种情况下只为用户公开存储库,因为 UserSettings 完全依赖于用户。
现在,我有 2 个具有双向关系的存储库,每个存储库一个,即 UserRepository 和 UserSettingsRepostory ,都作为 REST 服务公开。
因此,我在 UserSettings 和 User as 上进行 POST
/app/userSettings
/app/users
对于,我用于 UserSettings 和用户的 GET -
/app/users/{id}/userSettings
/app/users/{id}
如果我不公开 UserSettingsRepository ,则相当于/app/userSettings 上的 POST,我目前正在执行以下操作 -
Method - POST
Input JSON - {
"user" - "/app/users/{id}",
..
}
案例 2
同样,如果有以下实体/表 - User、UserPost 和 UserComment - 这里 UserComment 有 2 个外键作为 UserPost 和 User。
我想这里我们有 2 个聚合根,因此应该有 2 个存储库作为 UserRepository 和 UserPostRepository。
另一种思考方式是,既然所有都依赖于用户,所以我们只能为 UserRepository 提供 1 个存储库。
这里也是,与我目前的状态相反,我什至有 UserCommentRepository,我不确定一旦删除它如何在 UserComment 上进行 POST。
【问题讨论】:
-
我在这里找到了一些参考资料 - github.com/olivergierke/spring-restbucks/blob/master/…
标签: spring spring-data spring-data-rest