GinでGORM CRUD入門
Gin初心者のためのデータベース連携入門
まずはGinを使った簡単なAPIサーバを作り、データベース連携を行う手順を紹介します。Ginは軽量で高速なWebフレームワークで、gin.Default()でロギングやリカバリミドルウェアを自動で設定できます。データベース連携にはGORMを使うのが一般的ですが、database/sqlを直接利用するケースもあります。以下ではGORMをベースに、接続文字列をgorm.Open(sqlite.Open("test.db"))で設定し、db.AutoMigrate(&User{})でテーブルを作成します。
GORMとdatabase/sqlの使い分け
GORMはORMとして便利で、モデル構造体にタグを付けるだけでCRUDが簡単に実装できます。一方、database/sqlは低レベルでクエリ実行を細かく制御したい場合に有効です。例えば、複雑なJOINやトランザクション制御を行う際はsql.DBを直接使うことでパフォーマンスを最適化できます。初心者はまずGORMでCRUDを試し、必要に応じてdatabase/sqlに切り替えると良いでしょう。
CRUD操作とモデル設計
モデルは構造体で定義し、タグでテーブル名やカラム名を指定します。例として以下のようにUserモデルを作成します。
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:255;not null"`
Age int
}
CRUDはdb.Create(&user)、db.First(&user, id)、db.Save(&user)、db.Delete(&user)で実装できます。これらはdatabase/sqlのExecやQueryRowに相当しますが、GORMなら自動でプレースホルダを生成してくれます。
マイグレーションと永続化のベストプラクティス
マイグレーションはdb.AutoMigrate(&User{})で簡単に行えますが、実運用ではバージョン管理されたマイグレーションツール(例:golang-migrate)を使うことが推奨されます。永続化の観点では、接続プールを設定し、db.SetMaxOpenConns(10)やdb.SetConnMaxLifetime(time.Hour)でリソースを最適化します。また、トランザクションを利用して一貫性を保つことも重要です。
コメント
コメントを投稿