Это также для решения проблем такого рода, которые были созданы ORM .
Если вам нужны двунаправленные отношения между учеником и учителем, вы действительно должны выполнить выборку отношений один раз.
Я отмечаю, что в вашем примере вы хотите загрузить Учителя, но также и его отношения.
Это может быть желательно в некоторых случаях, но нежелательно в других случаях.Таким образом, вы должны, вероятно, параметризовать эту функцию.Я подробно опишу этот момент в ближайшее время.
В вашем случае я бы, вероятно, определил findWithStudents(int teacherId)
в TeacherDAO
, который загружает учителей и делегатов в find(int studentId, Teacher teacher)
в StudentDAO
для загрузки ученика.
Таким образом, в StudentDAO
,метод знает, что учитель уже загружен, и он не будет загружать его снова.
Если это имеет смысл, как сказано, у вас может быть перегрузка для некоторых других случаев.Например, findWithTeacher(int studentId)
в StudentDAO
, загружающем ученика и учителя, или find(int teacherId)
в TeacherDAO
, загружающем только учителя.