Термин «ленивая загрузка» обычно используется, когда речь идет об объектных реляционных картографах. Если вы используете ADO.NET напрямую, вы всегда получаете активную загрузку (т.е. она всегда загружает только то, что вы указываете).
OR-mappers, такие как поддержка nHibernate, возвращающая прокси-объекты, которые получают «заполненные» соответствующими данными только при доступе к данным. Таким образом, вы загружаете только те данные, которые вы действительно используете.Это полезная функция, когда вы указываете много отношений между объектами, которые могут быть загружены из базы данных, вы не хотите, чтобы OR-mapper загружал все связанные объекты и объекты, связанные с связанными объектами, и так далее. Это может привести к загрузке всей вашей базы данных.
Эта проблема может быть предотвращена путем тщательной разработки вашей объектной модели. (использование агрегатов и загрузка только корневых корней, как в ведомом домене, - это способ обойти это без использования ленивой загрузки).
Lazy loading может привести к тому, что или mapper сделает много небольших доступов к базе данных вместо того, чтобы извлекать все данные, которые вам нужны один раз. Это также может привести к проблемам с производительностью.
Отличное объяснение. – Christian 2011-06-16 10:10:37
+1 для сравнения с "Eager Loading" – 2011-09-14 19:00:11