Sobes.tech
Back to questions
Senior
3

Используете ORM или ручные запросы для работы с базой данных?

Companies where asked
Финтехробот

Answer from AI

sobes.tech AI

В Go часто используют оба подхода — ORM и ручные SQL-запросы — в зависимости от задачи. ORM (например, GORM) удобен для быстрого прототипирования и работы с простыми CRUD-операциями, он абстрагирует SQL и позволяет работать с базой через структуры и методы.

Однако для сложных запросов, оптимизации производительности или специфичных операций часто предпочтительнее писать ручные запросы с помощью стандартной библиотеки database/sql или sqlx. Это даёт полный контроль над SQL и может быть эффективнее.

Пример использования GORM:

import (
    "gorm.io/gorm"
)

type User struct {
    ID   uint
    Name string
}

func getUser(db *gorm.DB, id uint) (*User, error) {
    var user User
    if err := db.First(&user, id).Error; err != nil {
        return nil, err
    }
    return &user, nil
}

Пример ручного запроса с database/sql:

import (
    "database/sql"
)

func getUser(db *sql.DB, id int) (*User, error) {
    user := &User{}
    err := db.QueryRow("SELECT id, name FROM users WHERE id = ?", id).Scan(&user.ID, &user.Name)
    if err != nil {
        return nil, err
    }
    return user, nil
}