GoでGORM入門:CRUD
Go実践とORMの概要
Go言語はシンプルで高速な実行速度が特徴ですが、データベース操作を行う際にSQLを直接書くと、コードが煩雑になりがちです。そこでORM(Object‑Relational Mapping)を利用すると、構造体とテーブルをマッピングし、SQLを意識せずにデータ操作が可能になります。Goで人気のORMライブラリにGORMがあります。
GORM基礎とインストール
GORMはGoで最も広く使われているORMで、gorm.io/gorm と gorm.io/driver/sqlite(またはMySQL, PostgreSQL等)をインストールします。
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite
インストール後は、以下のようにDB接続を行います。
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// 以降の操作は db 変数を使用
}
gorm.ModelとAutoMigrate
GORMでは gorm.Model を埋め込むことで、ID、CreatedAt、UpdatedAt、DeletedAt のフィールドを自動で持つ構造体を作成できます。これにより、レコードの管理が簡単になります。
type User struct {
gorm.Model
Name string
Email string
}
テーブルを自動生成するには AutoMigrate を呼び出します。
db.AutoMigrate(&User{})
これで users テーブルが作成され、必要なカラムが揃います。
CRUD操作:Create, First, Where
データの作成は Create メソッドで行います。
user := User{Name: "Alice", Email: "alice@example.com"}
db.Create(&user)
レコードを取得する際は First を使い、条件付き検索は Where で行います。
var u User
db.First(&u, 1) // ID が 1 のレコードを取得
db.Where("email = ?", "alice@example.com").First(&u)
これらのメソッドは内部でSQLを生成し、実行します。開発者は構造体とメソッド呼び出しだけで済むため、コードが読みやすくなります。
データベース操作とSQL抽象化
GORMはSQL抽象化レイヤーとして機能し、複雑なクエリもメソッドチェーンで表現できます。例えば、複数条件での検索やソート、ページングは以下のように書けます。
var users []User
db.Where("name LIKE ?", "%a%").
Order("created_at desc").
Limit(10).
Offset(20).
Find(&users)
このように、ORMを使うことでSQLの構文を意識せずにデータベース操作が可能になり、開発速度と保守性が向上します。Go実践においては、ORMを上手く活用することで、ビジネスロジックに集中できる環境を構築できます。
コメント
コメントを投稿