2017-06-20 52 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

有沒有硬性規定說你應該或不應該在那裏處理,所以這歸結於個人偏好。就個人而言,我更願意將特定於組的邏輯分解成它自己的方法,以便清楚地表達意圖。 –