По моему мнению, первый подход с DTO лучше, и я использую его также и сам, потому что с DTO вы можете эффективно транспортировать только те данные, которые вам нужны.
Вы можете легко создать больше DTO, которые охватывают другие комбинации свойств пользователя - например, DTO для отображения информации о пользователях в списке пользователей (там вам могут понадобиться только name
и e-mail
) .
В Spring Docs они используют PersonForm
DTO (они называют его объектом поддержки формы ) для проверки регистрации пользователя.
Таким образом, DTO могут охватывать различные бизнес-кейсы для одной и той же сущности (регистрация, показ личного профиля, показ списка сущностей и т. Д. c.).
С другой стороны, если вы используете две отдельные таблицы базы данных для ваших пользователей вы добавляете ненужную сложность в вашу программу (например, вам нужно сохранять / обновлять / удалять информацию в двух местах при внесении изменений).
Кроме того, если вы хотите начать добавлять новые способы отображения ваших данных пользователя, вы в конечном итоге начнете использовать DTO в любом случае (или создадите отдельную таблицу базы данных для каждого случая, что приведет к большому количеству дублированных данных) .