Может кто-нибудь указать мне на особенно хороший ресурс о JPA / Hibernate ленивый / нетерпеливый выбор? - PullRequest
1 голос
/ 05 сентября 2010

Ищете действительно хорошую статью, которая включает в себя стратегии / ошибки / обходные пути.Я бы предпочел чисто JPA-решение, но я знаю, что Hibernate предлагает множество расширений.

Ответы [ 2 ]

1 голос
/ 05 сентября 2010

Я не уверен, что именно вы ищете.Но проще говоря, LAZY просто означает, что дочерняя ассоциация не будет загружена при загрузке родительского элемента, она будет загружена при явном запросе приложения.EAGER означает, что дочерняя ассоциация будет загружена при загрузке родительского элемента.

Как правило, LAZY лучше с точки зрения производительности (когда вам просто не нужно или вы хотите загрузить целый граф объектов).Но в зависимости от ситуации, это может быть просто неоптимальным или привести к известной проблеме «N + 1 SELECT» (при итерации по списку из N объектов доступ к ассоциации LAZY вызовет другой SELECT, что приведет к 1 + N SELECTв конце).В зависимости от ситуации предпочтительнее ассоциация EAGER или FETCH JOIN для предварительной выборки ассоциации.

Так что я не знаю, какая часть неясна, но вот некоторые ресурсы, которые могут помочь:

См. Также:

0 голосов
/ 05 сентября 2010

Книга "Сохранение Java с Hibernate" Бауэром и Кингом, глава 13 "Оптимизация извлечения и кэширования" .Вы должны быть в состоянии найти копию книги онлайн.

...