Проверяет понимание основных подходов к работе с базой данных из кода и умение выбирать подходящий инструмент под задачу.
При работе с реляционной базой данных из приложения нужно как-то формировать SQL-запросы. Исторически сложились три подхода, и каждый решает свою задачу: ORM, query builder и «сырой» SQL с параметрами. Выбор между ними влияет на скорость разработки, читаемость кода, производительность и безопасность.
ORM сопоставляет классы и объекты языка программирования с таблицами и строками БД. Вы работаете с сущностями, а библиотека сама генерирует SQL.
// Hibernate / JPA
User user = entityManager.find(User.class, 1L);
List<Order> orders = user.getOrders(); // ленивая загрузка
Это DSL поверх SQL: вы строите запрос методами, а библиотека собирает корректный SQL с плейсхолдерами. Гибче ORM, но ближе к SQL.
// Knex.js
const rows = await knex('users')
.where('age', '>', 18)
.andWhere('active', true)
.select('id', 'name');
Вы пишете SQL вручную, но значения передаёте через параметры (prepared statements), а не конкатенацию строк.
-- Плохо: SQL-инъекция
SELECT * FROM users WHERE name = '" + name + "';
-- Хорошо: параметры
SELECT * FROM users WHERE name = ?;
Итог: в реальных проектах подходы часто комбинируют — ORM для повседневной работы, query builder для сложных выборок и сырой SQL там, где важна производительность. Главное — всегда использовать параметризацию, чтобы избежать SQL-инъекций.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию