Как полностью избежать двунаправленных круговых проблем в DTO - PullRequest
0 голосов
/ 21 апреля 2020

Команда:

@Entity
    public class TeamDTO {

        // other fields

        @OneToMany(mappedBy = "team")
        private List<PlayerDTO> members;

        // methods

    }

Игрок:

@Entity
public class PlayerDTO {

    // other fields

    @ManyToOne
    @JoinColumn(name = "pla_fk_n_teamId")
    private TeamDTO team;

    // methods

}

В нашем приложении мы используем Spring Boot . В основном у нас было моделей для транзакций БД и DTO для ответов пользовательского интерфейса.

Для моделей я вижу, что они имеют циклические зависимости (при использовании двунаправленной связи с использованием ассоциаций oneToMany и ManyToOne), но В случае DTO, как вы думаете, это хороший дизайн, чтобы показать BiDirectional?

Я использую MapStruct, для отображения объектов между моделями и DTO, когда я использовал DTO в качестве двунаправленного, это становится очень жестким чтобы решить эти проблемы круговой зависимости, это как большая часть времени тратить время на решение этих глупых круговых проблем.

Итак, в ваших приложениях ваши DTO являются двунаправленными или однонаправленными? Как избежать использования двунаправленного текста в DTO, учитывая приведенный ниже вариант использования?

when I do GET /teams/1 , I need to show all members of Team 1

when I do GET /players/11 , I need to show in which Team, player 11 playing.

Я уже искал в google выше, нашел несколько ответов и мог бы разрешить и круговые проблемы, но избегать абсолютно круглых вопросов - это действительно PIA для DTO.

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

...