Что это простыми словами

GORM — это переводчик между программой и базой данных для языка Go.

Аналогия: представьте, что база данных — это огромный архив с папками на иностранном языке (SQL). Чтобы что-то найти или положить, нужно знать этот язык и правильно составить запрос. GORM выступает переводчиком: разработчик пишет привычный код на Go, а GORM сам «переводит» это в нужные команды для архива и приносит результат обратно в удобном виде.

Такой инструмент в мире разработки называют ORM — Object-Relational Mapping, то есть «связь объектов с таблицами». GORM — самый распространённый ORM в экосистеме Go.

Официальное определение

Теперь, когда суть понятна, вот как GORM описывают в вакансиях и документации. Эту формулировку вы встретите у заказчика и в резюме — и теперь будете понимать, что за ней стоит.

«GORM — полнофункциональный ORM-фреймворк для языка Go, обеспечивающий декларативное маппинг-отображение структур на реляционные таблицы, поддержку миграций и цепочечный API запросов».

Разберём по словам. «ORM» — переводчик между объектами в коде и строками в базе данных. «Реляционные таблицы» — обычные таблицы с данными, как в Excel, только внутри базы данных. «Маппинг-отображение структур» значит, что каждая сущность в коде (например, «Пользователь») автоматически соответствует таблице в базе. «Миграции» — инструмент для создания и изменения структуры таблиц без ручных скриптов. «Цепочечный API» — возможность строить запросы к базе, дописывая условия шаг за шагом, как бусины на нитку.

Какую задачу решает

Любой бэкенд работает с данными: сохраняет пользователей, достаёт заказы, обновляет статусы. Без ORM разработчик пишет «сырые» SQL-запросы — длинные текстовые строки вроде SELECT * FROM users WHERE id = 1. Это муторно, легко ошибиться, и такой код сложно читать.

GORM убирает эту боль: разработчик пишет обычный Go-код, а рутинная работа с базой данных уходит на библиотеку. Это экономит время, снижает количество ошибок и делает код чище.

Дополнительный бонус: GORM умеет работать с разными базами данных (PostgreSQL, MySQL, SQLite) почти без изменений в коде. Разработчик пишет один раз — работает везде.

К какой экосистеме относится

Чем заменяется

Главная альтернатива в экосистеме Go — sqlx. Это не полноценный ORM, а «тонкая обёртка» над SQL: разработчик всё равно пишет SQL-запросы руками, но sqlx берёт на себя разбор результатов и работу с типами. Выбор между GORM и sqlx — это выбор стиля работы, а не уровня квалификации.

Переход между ними относительно дешёвый: разработчик, знающий принципы работы с базами данных в Go, освоит любой из этих инструментов за считаные дни. Главное — понимать саму работу с базами, а не конкретный синтаксис.

Что не путать

Насколько это важно при отборе

Короткий ответ: обычно это НЕ повод отбраковывать кандидата.

Если у кандидата в резюме стоит sqlx вместо GORM — это не тревожный сигнал. Оба инструмента решают одну задачу: работу с базой данных в Go. Разработчик с опытом в одном освоит другой за несколько дней. Отсеивать сильного Go-бэкендера только из-за выбора ORM — значит терять хороших людей.

Когда всё же стоит обратить внимание: если у кандидата в резюме нет вообще никакого опыта с базами данных — ни GORM, ни sqlx, ни упоминания PostgreSQL или MySQL, — а вакансия предполагает активную работу с данными, это повод уточнить на скрининге, как кандидат взаимодействовал с базами в своих проектах.

Это общий ориентир. В разных компаниях требования отличаются, поэтому всегда сверяйтесь с текстом конкретной вакансии.