Должен ли DTO модели данных иметь примитивные типы данных только для сериализации в Java? - PullRequest
0 голосов
/ 08 марта 2020

Я создал модель данных Student следующим образом:

class Student {
private final Name name;
private final Grade finalGrade;
private final Roll rollnumber;
}

Имя - это объект двух строк - firstName и lastName, Grade - это перечисление, а Roll номер - это объект из двух целых чисел - номер класса и номер места. Чтобы сохранить эти данные в БД, я сериализирую эти данные как JSON.

Итак, я создал DTO. Итак, мой вопрос: может ли DTO иметь одинаковые объекты Name, Grade и Roll или это должны быть примитивные типы данных?

Ответы [ 2 ]

2 голосов
/ 08 марта 2020

Назначение DTO используется для упаковки некоторых данных для передачи другим клиентам / системам по сети. Одним из популярных вариантов использования является веб-API. Поэтому, взяв в качестве примера JSON WEB API, структура DTO в основном зависит от структуры тела вашего ответа API и возможностей базовой структуры, которую вы используете для передачи ie DTO в JSON. * 1001. *

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

Например, очень распространено включение LocalDateTime в DTO, и затем платформа будет сериализована в допустимую строку данных ISO 8601, такую ​​как 2020-04-23T11:11:12.511Z. Не говоря уже о включении List / Set в DTO.

Если вы ограничиваете себя использованием только примитивного типа в DTO, это как-то означает, что все в ответе JSON будет сглажено и больше не будет вложенной структуры. Это может быть хорошо в очень простой случай, но не очень хороший, когда ваша модель данных немного богаче, что можно выразить гораздо лучше с помощью некоторой вложенной структуры.

0 голосов
/ 08 марта 2020

Если вы используете примитивы, вам будет проще сопоставить ваш DTO со столбцами БД!

Но, если вы намереваетесь хранить Json вашей модели данных, вы можете перейти к самой модели данных.

...