Ответ
ORM (Object-Relational Mapping) работает с объектами, отображая таблицы БД в классы. Позволяет оперировать данными как объектами, автоматически генерируя SQL. Пример с Sequelize (Node.js):
const user = await User.findOne({ where: { id: 1 } });
user.name = 'John';
await user.save();
Query Builder предоставляет fluent-интерфейс для построения SQL-запросов, но не маппит результаты в объекты. Более низкоуровневый, чем ORM. Пример с Knex.js:
const user = await knex('users').where('id', 1).first();
await knex('users').where('id', 1).update({ name: 'John' });
Ключевые отличия:
- ORM абстрагирует БД, Query Builder ближе к SQL
- ORM может иметь проблемы с производительностью в сложных запросах
- Query Builder требует больше ручной работы, но дает больше контроля