JPA Property Expressions与使用'In'

问题描述 投票:0回答:2

我有3个班:

学院: id, name, ....

学生: id, name, college, ....

分数: id, subject, student

我有collegeObject和我的学生名单。我可以通过两种方式查询学生的标记:

JPA财产表达: List<Marks> findByStudentCollege(College college)

在查询中使用 List<Marks> findByStudentIn(Set<Student> studentList)

从性能角度来看,我需要帮助知道哪个查询更好用。

java mysql spring spring-data-jpa query-performance
2个回答
1
投票

您正在执行两个不同的查询:

findByStudentCollege(大学学院):这个将用于在“大学”中的每个元素“学生”中找到学院的标记。你没有在分数和大学之间建立联系,所以你可能会做一个查询,比如“选择*来自学生的标记=(从学生那里选择id =大学=(从大学中选择))

findByStudentIn(设置studentList):这个将用于查找列表中的标记(0个或更多“学生”元素,因此您需要先列出学生,或使用它来查找一个焦点的学生的标记。

如果你没有完整的学生名单,第二个可能是最好的选择。如果你有一所大学的所有学生使用第一个学生,因为你正在避开第一个学生名单。

无论如何,即使你正在使用5k +行,你也不会看到这些查询之间的区别


0
投票

你应该试试findByStudentCollegeId,它比传递整个对象更好

© www.soinside.com 2019 - 2024. All rights reserved.