2015-02-24 4 views

ответ

7

Я думаю, вы спрашиваете, где написать целую сущность -> логику преобразования 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 

    } 

} 
+0

Вопрос не имеет никакого модульного материала. Это простой вопрос о том, как сделать это преобразование. –

+0

Ответ уже принят. –

+0

Если кто-то заботится о модульности, этот подход заставит DTOs зависеть от сущностей и наоборот.Более того, в проекте с несколькими модулями это приведет к циклической зависимости, если ваши объекты и DTO находятся в отдельном модуле (как правило, в случае). Оформить заказ [этот ответ] (https://stackoverflow.com/a/44561593/3381334) – parth

3

На мой взгляд

  • Юридическое лицо -> преобразование DTO должно быть сделано в контроллере перед отправкой страницы Jsp
  • DTO -> преобразование Entity должно быть сделано в контроллере, а после подтверждения DTO вернулась со страницы jsp

Это дает вам больше контроля над процессом, и вам не нужно менять классы обслуживания/персистентности каждый раз, когда изменяется логическое заполнение сущности.

+0

Согласовано. Кроме того, если вы объедините логику преобразования как в Entity, так и в DTO, они не могут быть разделены на отдельные артефакты JAR. Например, класс DTO не может быть передан третьей стороне, не включая Entity, который (в большинстве случаев) вы бы не хотели делать. –

3

Это старый вопрос с общепринятом ответом, но хотя обновите его простым способом, используя 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

Смежные вопросы