java - 从实体的服务层调用另一个实体的存储库

标签 java spring hibernate

有两个实体:邀请群组

用户可以邀请其他用户加入群组。我有一个用于邀请 Rest API 端点的 Controller 和一个实现业务逻辑的服务层。

accept方法定义在邀请服务层:

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 上的保存,这在某种程度上感觉不应该是一个好的设计。

最佳答案

我可能会考虑在组的服务层类中公开一个 addMemberToGroup 方法。然后,该逻辑全部捆绑在一起,如果向组添加成员的逻辑发生任何变化,您可以在一个中央、明显的位置执行此操作。

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

关于java - 从实体的服务层调用另一个实体的存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44645702/

相关文章:

java - 从数据库中获取值的好方法

java - Spring:为什么普通 Controller 和@ResponseBody Controller 生成不同的代码?

java - 如何在Spring Tool Suite中找到Spring版本?

Java hibernate : How to?

java - Spring Security登录返回404

java - spring mvc hibernate中刷新页面时如何添加更多购物车而不增加数量

java - 我的 java 应用程序抛出一个异常,显示 Invalid BSON field name Name

Java Hibernate 基于属性可空性的条件标准是否可能?

java - getContentLength() 仅在 WiFi 中返回 -1?

java - hibernate查询在java spring中不起作用