Двунаправленная связь Spring-boot или множественный запрос

Я использую веб-службу Spring Boot и хочу знать, как лучше всего управлять данными и отношениями между объектами. Первый метод использует двунаправленные отношения, подобные следующему:
Заголовок:

@Entity
public class Title {
    private Integer id;
    private String name;
    private List<TitleCelebrity> titleCelebrities;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Basic
    @Column(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @OneToMany(mappedBy = "title", cascade = CascadeType.ALL)
    public List<TitleCelebrity> getTitleCelebrities() {
        return titleCelebrities;
    }

    public void setTitleCelebrities(List<TitleCelebrity> titleCelebrities) {
        this.titleCelebrities = titleCelebrities;
    }
}

Название Знаменитости:

@Entity
@Table(name = "title_celebrity")
public class TitleCelebrity {
    private Integer id;
    private String type;
    private Title title;

    @Id
    @Column(name = "id")
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Basic
    @Column(name = "type")
    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "title_id")
    @JsonIgnore
    public Title getTitle() {
        return title;
    }

    public void setTitle(Title title) {
        this.title = title;
    }
}

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

0
0
352
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Зачем выбирать вариант с более высокими требованиями к ресурсам? Если вы выберете последний вариант, по крайней мере, используйте соединение. Выполнение двух запросов вместо того, чтобы позволить базе данных обрабатывать все сразу, приводит к ненужной трате ресурсов.

Кроме того, позвольте вашему ORM (спящему режиму) обрабатывать такие базовые запросы. На самом деле нет причин писать запросы самостоятельно.

Другие вопросы по теме