В чем разница между подходами ORM и Query Builder

«В чем разница между подходами ORM и Query Builder» — вопрос из категории Базы данных, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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 требует больше ручной работы, но дает больше контроля