Есть ли ORM в Go

«Есть ли ORM в Go» — вопрос из категории Golang, который задают на 26% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go нет встроенной ORM, но есть популярные сторонние библиотеки:

  1. GORM - самая популярная ORM для Go с поддержкой ассоциаций, хуков, миграций:
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
user := User{Name: "John"}
db.Create(&user)
  1. XORM - более легковесная альтернатива с хорошей производительностью

  2. ent - ORM от Facebook с кодогенерацией и строгой типизацией

Важно: многие Go-разработчики предпочитают использовать не ORM, а:

  • database/sql (стандартная библиотека)
  • sqlx (упрощает работу с database/sql)
  • sqlc (генерация кода из SQL-запросов)

ORM удобны для быстрой разработки, но могут скрывать сложные SQL-запросы и снижать производительность. Выбор зависит от проекта.