Пакетная загрузка лениво загруженного свойства Hibernate - PullRequest
1 голос
/ 20 августа 2010

Предположим, у меня есть:

class Student {
    int id;
    String name;
    List<Course> courses; //Lazily loaded as per Hiberante config
}

Теперь предположим, что у меня есть список студентов и, чтобы оптимизировать выборку списка для всех этих студентов, я должен был выбрать их пакетно, а не позволить Hibernate вызывать отдельный SQLпо одному.Я не могу отключить отложенную загрузку, так как во многих других путях кода я не получу доступ к свойству курса.

Я, безусловно, могу написать функцию, которая будет принимать список CourseIds и возвращать List, а затем прикреплять эти объекты кСеанс Hibernate, но эти объекты не будут связаны с объектами Student, загруженными Hibernate.Если я вызываю что-то вроде student.setCourses (), то рискую, что Hibernate посчитает сеанс грязным, и попробую обновить объекты Student.

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

1 Ответ

1 голос
/ 20 августа 2010

Напишите конкретный запрос гибернации, чтобы получить класс ученика с «соединением», чтобы получить все связанные курсы в одном запросе. Пример:

from Student s left join fetch s.courses
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...