Я не уверен, что именно вы ищете.Но проще говоря, LAZY
просто означает, что дочерняя ассоциация не будет загружена при загрузке родительского элемента, она будет загружена при явном запросе приложения.EAGER означает, что дочерняя ассоциация будет загружена при загрузке родительского элемента.
Как правило, LAZY
лучше с точки зрения производительности (когда вам просто не нужно или вы хотите загрузить целый граф объектов).Но в зависимости от ситуации, это может быть просто неоптимальным или привести к известной проблеме «N + 1 SELECT» (при итерации по списку из N объектов доступ к ассоциации LAZY
вызовет другой SELECT, что приведет к 1 + N SELECTв конце).В зависимости от ситуации предпочтительнее ассоциация EAGER
или FETCH JOIN
для предварительной выборки ассоциации.
Так что я не знаю, какая часть неясна, но вот некоторые ресурсы, которые могут помочь:
См. Также:
- Документация Hibernate Core
- Спецификация JPA 1.0
- Раздел 4.4.5.3 «Выборки соединений»