Пользовательский объект с двумя DTO против двух объектов - UserLogin, Пользователь - PullRequest
0 голосов
/ 29 февраля 2020

Я сейчас пишу проект в Spring Boot. Меня интересует способ входа в систему. На фронтэнде я хотел бы показать всем пользователям некоторые подробные данные, например, проекты, в которых они участвуют и т. Д. c. Поскольку я не хочу отправлять пароль и некоторые личные данные на передний план, я нашел два решения:

  1. Создание двух DTO - одно используется для входа в систему, регистрации; второй - для отображения информации о пользователе.
  2. Создайте две сущности - UserLogin с данными, необходимыми для регистрации и входа в систему, и User с остальными данными. Затем свяжись с ними один на один.

Какой подход более правильный?

1 Ответ

1 голос
/ 29 февраля 2020

По моему мнению, первый подход с DTO лучше, и я использую его также и сам, потому что с DTO вы можете эффективно транспортировать только те данные, которые вам нужны.

Вы можете легко создать больше DTO, которые охватывают другие комбинации свойств пользователя - например, DTO для отображения информации о пользователях в списке пользователей (там вам могут понадобиться только name и e-mail) .

В Spring Docs они используют PersonForm DTO (они называют его объектом поддержки формы ) для проверки регистрации пользователя.

Таким образом, DTO могут охватывать различные бизнес-кейсы для одной и той же сущности (регистрация, показ личного профиля, показ списка сущностей и т. Д. c.).

С другой стороны, если вы используете две отдельные таблицы базы данных для ваших пользователей вы добавляете ненужную сложность в вашу программу (например, вам нужно сохранять / обновлять / удалять информацию в двух местах при внесении изменений).

Кроме того, если вы хотите начать добавлять новые способы отображения ваших данных пользователя, вы в конечном итоге начнете использовать DTO в любом случае (или создадите отдельную таблицу базы данных для каждого случая, что приведет к большому количеству дублированных данных) .

...