【发布时间】:2020-08-01 07:29:04
【问题描述】:
我正在开发一个标准的 Spring Boot(带有 Spring Web 和 Spring Data)Rest Web 服务并遇到了这种情况。
例如,如果我有两个实体:
- 用户
- 团队
他们有一个多对多的关系。他们的服务看起来如何?
选项 1:
- UserService 依赖于 UserRepository
- TeamService 依赖于 TeamRepository 和 UserRepository
选项 2:
- UserService 依赖于 UserRepository
- TeamService 依赖于 TeamRepository 和 UserService
我在考虑选项 2,因为每个存储库都通过其各自的服务进行接口,但以下问题来自于此:
如果我希望服务仅公开 DTO,并且需要我的 TeamService 中的用户实体,以便使用 Hibernate 进行多对多工作(我不仅需要 id 参考)。我必须做变通方法或从 UserService 公开实体。
什么是更清晰的解决方案,或者我的逻辑是否混淆了?
编辑:
一些上下文:
如果我需要 TeamService 中的 addUserToTeam(Integer userId, Integer teamId) 之类的方法,我需要通过 id 获取用户实体,以便将其添加到用户的团队列表中。
【问题讨论】:
-
为什么teamService需要依赖其中一个?它们的功能将是相互排斥的。
-
如果我需要 TeamService 中的 addUserToTeam(Integer userId, Integer teamId) 之类的方法,我需要通过 id 获取用户实体,以便将其添加到用户团队列表中。
标签: java spring spring-boot