Двунаправленная связь 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;
    }
}

НазваниеCelebrity entity:

@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.
Я предпочитаю второй способ, но это лучший способ?


person K. Ayoub    schedule 04.08.2018    source источник


Ответы (1)


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

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

person Toby Caulk    schedule 04.08.2018