2017-06-20 54 views
0

的服务层的另一实体的存储库有两个实体:邀请集团调用从实体

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

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

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); 
} 

我想知道这是否是访问另一个实体库(这里:group repository)一个好主意,一些实体服务层(这里:invitation服务层)。

一个选项是将save方法添加到group服务层。但它只能称为groupRepository上的保存,这在某种程度上感觉应该不是一个好设计。

+0

当服务访问多个存储库时,我认为这很好。这是业务逻辑的一部分,所以一起使用它们。 – StanislavL

+0

这里最好的做法是什么? –

回答

0

我可能会考虑在组的服务层类中暴露addMemberToGroup方法。然后,将这种逻辑全部捆绑在一起,并且如果向组添加成员的逻辑以任何方式发生变化,则可以在中心明显的位置执行此操作。

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

+0

你的意思是我们不应该在'invitation'服务层中处理'group'实体吗? –

+0

有没有硬性规定说你应该或不应该在那里处理,所以这归结于个人偏好。就个人而言,我更愿意将特定于组的逻辑分解成它自己的方法,以便清楚地表达意图。 –