我正在使用一个Spring Boot web服务,我想知道操作数据的最佳方式实体之间的关系。
第一种方法是使用如下双向关系:
标题实体:
@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;
}
}
TitleElebrity实体:
@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;
}
}
所以每次我请求获得一个头衔,我都会得到一个头衔,上面有一个头衔列表,这就是我想要的。
现在另一种方法不是使用双向关系,而是进行两个查询,第一个是获取标题,然后根据标题id进行第二个查询以获取titleElebrity。
我喜欢第二条路,但这是最好的路吗?