JPA и DTO, лучший способ создать DTO? - PullRequest
3 голосов
/ 08 августа 2010

Мы должны использовать DTO для отправки данных на уровень представления и обратно.

У меня есть метод в сервисном объекте с именем PostAd, который публикует объявление, введенное пользователем.Ad имеет ассоциацию с другим объектом, называемым AdValues, который содержит значения для Ad (название, цена, описание и т. Д.)

@Entity
public class Ad {
   @OneToMany
   Set<AdValue> values ...
   ...

Мне интересно, что лучше, насколькоархитектура DTO гласит:

  1. имеет два DTO, один из которых называется AdDTO, а другой - AdValuesDTO и вызывает метод PostAd как PostAd(AdDTO, AdValuesDTO) ~ или ~

  2. Иметь AdDTO, который содержит AdValuesDTO, имитирующую структуру сущности ... это включает в себя наличие DTO в DTO:

    AdDTO {
      Set<AdValuesDTO> adValues ...
    

Тогда метод PostAd называется PostAd(AdDTO)

Или есть другая альтернатива?

1 Ответ

9 голосов
/ 09 августа 2010

Оба будут работать, но с более поздним подходом вы также можете использовать DTO для отправки данных с сервера клиенту. А так как иметь DTO уже сложно и дорого в обслуживании, вы не хотите умножать их, как Иисуса, на хлеб.

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

...