【初心者向け】Go ORM「GORM」の使い方|DB開発を効率化する方法

プログラム

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/sqlGORM
学習コスト
柔軟性
開発速度
SQL記述必要少ない

実務での応用

  • REST API
  • SaaS開発
  • 管理画面
  • ECサイト


よくある失敗

❌ AutoMigrate乱用
❌ N+1問題
❌ Transaction未使用


ベストプラクティス

  • Model整理
  • Migration管理
  • Transaction利用
  • Preload最適化

💡 結論

👉
「GORMはGo開発速度を爆速化するORM」

コメント

タイトルとURLをコピーしました