Что такое отложенная загрузка (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 (много запросов при обработке коллекций)
- Неожиданные запросы к БД могут возникнуть после закрытия сессии