Передача набора идентификаторов или набора объектов в качестве данных в DTO в Spring Boot?

Я пытаюсь создать приложение для управления проектами, и для моего бэкэнда у меня есть объект проекта, который имеет отношения «многие ко многим» с объектом пользователя. У меня есть следующий DTO:

public class ProjectDto implements Serializable {
    private final Long id;
    private final String name;
    private final String description;
    private final Date createdAt;
    private final Date updatedAt;
    private final Set<UserDto> users;
}

И в моем ProjectService я хочу иметь метод, который создает проект, которому назначены все отправленные пользователи. Однако мой вопрос заключается в том, должен ли мой интерфейс отправлять на мой сервер набор пользовательских объектов или лучше отправить набор идентификаторов пользователей, которых я хочу назначить этому проекту? Не лучше ли вернуть этот DTO при создании проекта и иметь другой DTO с набором идентификаторов пользователей, когда я хочу создать проект?

0
0
22
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете доверять данным из внешнего интерфейса, и вам необходимо применить проверки для тела запроса, включить Set<UserDto> users, а для проверки users вы должны получить из БД (или других источников). И использование Set<?> userIds также необходимо для извлечения из БД, но вам не нужно добавлять дополнительный код для проверки DTO, а проверка идентификаторов более проста и удобна в обслуживании. Использование userIds также позволяет убедиться, что users, для которого установлено значение project, являются объектами, извлеченными из БД. Это также упрощает код FE (я надеюсь), поскольку не нужно создавать объект (DTO).

Другие вопросы по теме