假设有一个实体
public class Subject {
private int id;
private String name;
private List<Teacher> teacher;
private List<Book> books;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Teacher> getTeacher() {
return teacher;
}
public void setTeacher(List<Teacher> teacher) {
this.teacher = teacher;
}
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
}
对于Rest API获取主题详细信息,其中我将获得一个id主题。
我需要获取教师列表和书籍列表 更明智的做法是明智而灵活。
(1)带有连接的单个查询 (2)1个用户查询,然后1个查询教师用subject_id作为过滤器,然后1个查询书籍,用subject_id作为过滤器
请考虑性能,实体构建逻辑和变更的灵活性,例如。在相同的API用户可以提供一个标志来告知是否包括书籍列表作为响应。 如何在企业项目中决定使用哪种方法。
答案 0 :(得分:2)
这取决于......
Teacher
到Subject
的数量是多少?Book
到Subject
的数量是多少?Subject
?如果回复是10, 50, 1000, no
,结果可能会返回500 000行(10 * 50 * 1000)!
你应该考虑笛卡尔积
如果笛卡尔积不成问题,则连接速度更快。