Выражения свойств JPA против использования 'In' - PullRequest
0 голосов
/ 17 сентября 2018

У меня есть 3 класса:

Колледж :
id, name, ....

Студент :
id, name, college, ....

Оценки :
id, subject, student

У меня есть CollegeObject и список студентов со мной.Я могу запросить оценки ученика двумя способами:

Выражения свойств JPA :
List<Marks> findByStudentCollege(College college).

Использование In Query
List<Marks> findByStudentIn(Set<Student> studentList)

Мне нужна помощь, чтобы узнать, какой запрос лучше использовать с точки зрения производительности.

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вы выполняете два разных запроса:

findByStudentCollege (College College): этот будет использоваться для поиска отметок колледжа, в каждом элементе «student» в «College». Вы не устанавливаете соединение между оценками и колледжем, поэтому, вероятно, вы будете выполнять запрос типа «выбрать * из оценок, где студент = (выберите идентификатор из« Студент, где колледж = (выберите из колледжа)) »

findByStudentIn (Set studentList): этот будет использоваться для поиска оценок в списке (0 или более элементов «student»), поэтому вам нужно предварительно перечислить учащихся или использовать его для поиска оценок одного студента. в фокусе.

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

В любом случае, вы не увидите различий между этими запросами, даже если вы работаете с 5k + строками

0 голосов
/ 17 сентября 2018

вы должны попробовать findByStudentCollegeId, это лучше, чем передать весь объект для запроса

...