Java 调用另一个实体';从实体的服务层创建存储库
有两个实体:邀请和集团 用户可以邀请其他用户加入组。我有一个用于RESTAPI端点的控制器和一个实现业务逻辑的服务层 接受方法在邀请服务层中定义:Java 调用另一个实体';从实体的服务层创建存储库,java,spring,hibernate,Java,Spring,Hibernate,有两个实体:邀请和集团 用户可以邀请其他用户加入组。我有一个用于RESTAPI端点的控制器和一个实现业务逻辑的服务层 接受方法在邀请服务层中定义: public void accept(long invitationId, String username) { Invitation invitation = this.loadById(invitationId); User user = userService.loadByUsername(username); vali
public void accept(long invitationId, String username) {
Invitation invitation = this.loadById(invitationId);
User user = userService.loadByUsername(username);
validateAccessToInvitation(invitation, user);
Group group = invitation.getGroup();
group.addMember(user);
invitationRepository.delete(invitation);
// groupRepository.save(group);
}
我想知道访问另一个实体存储库(此处:组存储库
)某个实体服务层(此处:邀请
服务层)是否是一个好主意
一个选项是将
save
方法添加到group
服务层。但它只会调用groupRepository
上的save,这让人觉得它不应该是一个好的设计 > P>我可能会考虑在服务层类中为组公开<<代码> AddiMisttoGyp方法。然后,这些逻辑被捆绑在一起,如果向组中添加成员的逻辑以任何方式发生变化,您可以在一个明显的中心位置执行此操作
我甚至可以说,这种方法可能会违反单一的责任原则。
< P>我可能会考虑在服务层类中为组公开<<代码> AddiMistOutoGub/Cudio>方法。然后,这些逻辑被捆绑在一起,如果向组中添加成员的逻辑以任何方式发生变化,您可以在一个明显的中心位置执行此操作我甚至可能会说,这种方法可能会违反单一责任原则。我认为,当服务访问多个存储库时,这是好的。这是业务逻辑的一部分,所以请将它们结合使用。这里的最佳实践是什么?我认为当服务访问多个存储库时,这是很好的。这是业务逻辑的一部分,所以请将它们结合起来使用。这里的最佳做法是什么?你的意思是我们不应该在
邀请
服务层中处理组
实体吗?没有硬性规定说你应该或不应该在那里处理,所以这取决于个人偏好。就我个人而言,我更愿意将特定于组的逻辑划分为自己的方法,以便清楚地表达意图。你的意思是我们不应该在邀请
服务层中处理组
实体吗?没有硬性规定说你应该或不应该在那里处理它,因此,这取决于个人偏好。就我个人而言,我更愿意将特定于组的逻辑划分为自己的方法,以便清楚地表达意图。