Java 调用另一个实体';从实体的服务层创建存储库

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

有两个实体:邀请集团

用户可以邀请其他用户加入组。我有一个用于RESTAPI端点的控制器和一个实现业务逻辑的服务层

接受方法在邀请服务层中定义:

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>方法。然后,这些逻辑被捆绑在一起,如果向组中添加成员的逻辑以任何方式发生变化,您可以在一个明显的中心位置执行此操作


我甚至可能会说,这种方法可能会违反单一责任原则。

我认为,当服务访问多个存储库时,这是好的。这是业务逻辑的一部分,所以请将它们结合使用。这里的最佳实践是什么?我认为当服务访问多个存储库时,这是很好的。这是业务逻辑的一部分,所以请将它们结合起来使用。这里的最佳做法是什么?你的意思是我们不应该在
邀请
服务层中处理
实体吗?没有硬性规定说你应该或不应该在那里处理,所以这取决于个人偏好。就我个人而言,我更愿意将特定于组的逻辑划分为自己的方法,以便清楚地表达意图。你的意思是我们不应该在
邀请
服务层中处理
实体吗?没有硬性规定说你应该或不应该在那里处理它,因此,这取决于个人偏好。就我个人而言,我更愿意将特定于组的逻辑划分为自己的方法,以便清楚地表达意图。