Что это простыми словами
SQLDelight — это переводчик SQL в безопасный код, который проверяет ошибки ещё до запуска приложения.
Аналогия: представьте, что вы пишете письмо на иностранном языке. Обычно вы узнаете об ошибке, только когда получатель не поймёт фразу. SQLDelight — это автопроверка грамматики прямо при написании: подчёркивает красным и говорит «эта таблица не существует» или «вы указали не тот тип данных». Ошибку видишь сразу в редакторе, а не когда пользователь уже кликнул кнопку.
SQL — это язык запросов к базе данных. SQLDelight берёт эти запросы, проверяет их правильность и генерирует готовый код на Kotlin, с которым удобно и безопасно работать.
Официальное определение
Теперь, когда суть понятна, вот как SQLDelight описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.
«SQLDelight — библиотека для генерации типобезопасных Kotlin API из SQL-запросов с валидацией схемы, запросов и миграций на этапе компиляции».
Разберём по словам. «Генерация API» — библиотека автоматически создаёт код, через который удобно работать с базой данных. «Типобезопасные» значит, что если вы попытаетесь положить текст туда, где ожидается число, код просто не скомпилируется — ошибка всплывёт сразу. «На этапе компиляции» — проверка происходит при сборке проекта, а не когда приложение уже работает у пользователя. «Валидация схемы и миграций» — библиотека проверяет, что таблицы существуют, а изменения структуры базы написаны корректно.
Какую задачу решает
Когда разработчик пишет SQL-запросы вручную, ошибки обнаруживаются поздно: запустил приложение, нажал кнопку — и вот тут вылетела ошибка «таблица не найдена» или «неверный тип данных». Искать такие баги долго и неприятно, особенно если они всплывают уже у пользователей.
SQLDelight переносит проверку на этап написания кода: прямо в редакторе видно, что запрос неправильный. Плюс библиотека генерирует удобные функции для работы с данными, поэтому не нужно постоянно писать однотипный код для чтения и записи.
Ещё одна польза: SQLDelight работает с Kotlin Multiplatform, а значит один и тот же код для базы данных можно использовать и в мобильном приложении, и на сервере, и в десктопе.
К какой экосистеме относится
Язык — Kotlin.
Фреймворк — чаще всего Kotlin Multiplatform. Именно для кроссплатформенных проектов SQLDelight особенно популярен, хотя его можно использовать и в обычном Android- или backend-приложении.
Специальность — backend-разработчик на Kotlin, а также мобильные разработчики, работающие с Kotlin Multiplatform.
В стеке с SQLDelight часто встречаются kotlinx.serialization (для работы с JSON) и Compose Multiplatform (для интерфейса).
Чем заменяется
SQLDelight — не единственный способ работать с базами данных в Kotlin. Ту же задачу решают Room (популярна в Android), Exposed (для backend на Kotlin) и другие ORM-библиотеки.
Главное: переход между ними дешёвый. Разработчик, который работал с Room, разберётся в SQLDelight за считаные дни — идея похожая, отличается способ написания запросов. Это не разные специальности, а разные инструменты для одной задачи.
Особенность SQLDelight: она заточена под Kotlin Multiplatform, поэтому если проект кроссплатформенный, SQLDelight часто оказывается естественным выбором.
Что не путать
SQLDelight ≠ SQL. SQL — это сам язык запросов к базе данных. SQLDelight — библиотека, которая работает с этими запросами и генерирует код.
SQLDelight ≠ база данных. Сама база (SQLite, PostgreSQL, MySQL) хранит данные. SQLDelight — это прослойка, которая помогает с ней удобно работать.
SQLDelight ≠ классическая ORM. ORM обычно генерирует SQL из классов кода. SQLDelight делает наоборот: вы пишете SQL, а она генерирует код. Для рекрутера разница неважна, но разработчики чётко различают эти подходы.
SQLDelight ≠ Kotlin Multiplatform. Kotlin Multiplatform — это фреймворк для разработки кроссплатформенных приложений, SQLDelight — одна из библиотек внутри его экосистемы.
Насколько это важно при отборе
Короткий ответ: обычно это НЕ повод отбраковывать кандидата.
Самая частая ошибка новичка-рекрутера — отсеивать сильного разработчика, у которого в резюме указаны Room или Exposed вместо SQLDelight. Он освоит SQLDelight за несколько дней, потому что задача та же. Отсеивая по конкретной библиотеке, вы теряете хороших людей и затягиваете поиск.
Правильный подход: смотрите, есть ли у кандидата опыт работы с любой библиотекой для работы с базами данных в Kotlin. Если есть — этого достаточно. Если в вакансии жёстко написано «только SQLDelight», уточните у нанимающего менеджера, действительно ли это принципиально: часто оказывается, что нет.
Когда всё же стоит обратить внимание: если проект на Kotlin Multiplatform и активно использует кроссплатформенный код для работы с базой, опыт именно с SQLDelight будет плюсом. Но даже в этом случае кандидат с Room освоится быстро.
Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.