GORM は、Go言語で最も人気の高いORM(Object Relational Mapper)です。
SQLを直接書かなくても、構造体ベースでデータベース操作ができるため、開発効率が大きく向上します。
本記事では、Go ORM「GORM」の使い方を「導入・CRUD操作・実務でのポイント」まで初心者向けに解説します。
GORMとは?
GORMとは👇
👉 Go用のORMライブラリ
特徴👇
- SQLを書かなくてもDB操作可能
- structベースで扱える
- MySQL / PostgreSQL対応
- マイグレーション対応
GORMインストール
go get gorm.io/gorm
MySQLドライバ導入
go get gorm.io/driver/mysql
PostgreSQLドライバ導入
go get gorm.io/driver/postgres
MySQL接続
MySQL
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
dsn := "user:pass@tcp(localhost:3306)/sample"
db, err := gorm.Open(
mysql.Open(dsn),
&gorm.Config{},
)
PostgreSQL接続
PostgreSQL
import (
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
dsn := "host=localhost user=postgres password=pass dbname=sample port=5432 sslmode=disable"
db, err := gorm.Open(
postgres.Open(dsn),
&gorm.Config{},
)
モデル定義
type User struct {
ID uint
Name string
}
テーブル作成(Migration)
db.AutoMigrate(&User{})
👉 自動でテーブル生成
CREATE(登録)
db.Create(&User{
Name: "Tomoya",
})
SELECT(取得)
var user User
db.First(&user, 1)
UPDATE(更新)
db.Model(&user).Update(
"Name",
"Taro",
)
DELETE(削除)
db.Delete(&user)
実務で重要なポイント
✔ Model設計
gorm.Model
👉 created_at等を自動管理
✔ Transaction対応
tx := db.Begin()
✔ Preload(JOIN)
db.Preload("Orders").Find(&users)
database/sqlとの違い
| 項目 | database/sql | GORM |
|---|---|---|
| 学習コスト | 中 | 低 |
| 柔軟性 | 高 | 中 |
| 開発速度 | 中 | 高 |
| SQL記述 | 必要 | 少ない |
実務での応用
- REST API
- SaaS開発
- 管理画面
- ECサイト
よくある失敗
❌ AutoMigrate乱用
❌ N+1問題
❌ Transaction未使用
ベストプラクティス
- Model整理
- Migration管理
- Transaction利用
- Preload最適化
💡 結論
👉
「GORMはGo開発速度を爆速化するORM」


コメント