Я использую Spring MVC
архитектуры с JPA
в моем веб-приложении.Преобразование DTO в объект и обратно
Где преобразовать DTO в объект и наоборот вручную (без использования каких-либо фреймворков)?
Я использую Spring MVC
архитектуры с JPA
в моем веб-приложении.Преобразование DTO в объект и обратно
Где преобразовать DTO в объект и наоборот вручную (без использования каких-либо фреймворков)?
Я думаю, вы спрашиваете, где написать целую сущность -> логику преобразования DTO.
Как Вашего лицо
class StudentEntity {
int age ;
String name;
//getter
//setter
public StudentDTO _toConvertStudentDTO(){
StudentDTO dto = new StudentDTO();
//set dto values here from StudentEntity
return dto;
}
}
Ваш DTO Должен быть как
class StudentDTO {
int age ;
String name;
//getter
//setter
public StudentEntity _toConvertStudentEntity(){
StudentEntity entity = new StudentEntity();
//set entity values here from StudentDTO
return entity ;
}
}
И Ваш контроллер должен быть как
@Controller
class MyController {
public String my(){
//Call the conversion method here like
StudentEntity entity = myDao.getStudent(1);
StudentDTO dto = entity._toConvertStudentDTO();
//As vice versa
}
}
На мой взгляд
Это дает вам больше контроля над процессом, и вам не нужно менять классы обслуживания/персистентности каждый раз, когда изменяется логическое заполнение сущности.
Согласовано. Кроме того, если вы объедините логику преобразования как в Entity, так и в DTO, они не могут быть разделены на отдельные артефакты JAR. Например, класс DTO не может быть передан третьей стороне, не включая Entity, который (в большинстве случаев) вы бы не хотели делать. –
Это старый вопрос с общепринятом ответом, но хотя обновите его простым способом, используя API-интерфейс map-mapper.
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>0.7.4</version>
</dependency>
Используя этот API, вы избежать ручного сеттер & добытчиками, как описано в общепринятом ответ.
На мой взгляд, оба преобразования должны выполняться на контроллере с помощью частных методов утилиты и с использованием карты потока Java8 (если происходит обмен Коллекцией DTO), как показано в this article.
Это должно произойти на контроллере, поскольку DTO предназначены для эксклюзивных объектов передачи. Я не принимаю свои DTO дальше.
Вы передаете свои службы & уровня доступа к данным для сущностей и конвертируете DTO в объекты до вызова методов службы. & конвертировать объекты в DTO перед возвратом ответа от контроллера.
Я предпочитаю этот подход, поскольку сущности редко меняются, и данные могут быть добавлены/удалены из DTO по желанию.
Подробные конфигурации и правила конфигурации модели описаны here
Вопрос не имеет никакого модульного материала. Это простой вопрос о том, как сделать это преобразование. –
Ответ уже принят. –
Если кто-то заботится о модульности, этот подход заставит DTOs зависеть от сущностей и наоборот.Более того, в проекте с несколькими модулями это приведет к циклической зависимости, если ваши объекты и DTO находятся в отдельном модуле (как правило, в случае). Оформить заказ [этот ответ] (https://stackoverflow.com/a/44561593/3381334) – parth