Что такое отложенная загрузка (lazy loading) в ORM

Python Middle Без компании
Что такое отложенная загрузка (lazy loading) в ORM
Ответы
Отложенная загрузка (lazy loading) — это стратегия загрузки данных в ORM, при которой связанные объекты загружаются только при первом обращении к ним, а не сразу при загрузке основного объекта. Это позволяет оптимизировать производительность, избегая лишних запросов к БД. Пример в SQLAlchemy: ``` class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) posts = relationship("Post", lazy='select') # lazy loading по умолчанию class Post(Base): __tablename__ = 'posts' id = Column(Integer, primary_key=True) # При обращении к постам пользователя будет выполнен отдельный запрос user = session.query(User).first() print(user.posts) # Здесь выполнится SELECT * FROM posts WHERE user_id=? ``` Плюсы: - Экономия ресурсов, если связанные данные не нужны - Удобство работы с объектами Минусы: - Проблема N+1 (много запросов при обработке коллекций) - Неожиданные запросы к БД могут возникнуть после закрытия сессии