GORM 構成

GORM は、初期化時に使用できる構成を提供します。

type Config struct {
SkipDefaultTransaction bool
NamingStrategy schema.Namer
Logger logger.Interface
NowFunc func() time.Time
DryRun bool
PrepareStmt bool
DisableNestedTransaction bool
AllowGlobalUpdate bool
DisableAutomaticPing bool
DisableForeignKeyConstraintWhenMigrating bool
}

SkipDefaultTransaction

GORM は、データの一貫性を確保するためにトランザクション内で書き込み(作成/更新/削除)操作を実行します。必要ない場合は、初期化時に無効にすることができます。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
SkipDefaultTransaction: true,
})

NamingStrategy

GORM は、インターフェース `Namer` を実装する必要があるデフォルトの `NamingStrategy` をオーバーライドすることで、命名規則を変更できます。

type Namer interface {
TableName(table string) string
SchemaName(table string) string
ColumnName(table, column string) string
JoinTableName(table string) string
RelationshipFKName(Relationship) string
CheckerName(table, column string) string
IndexName(table, column string) string
}

デフォルトの `NamingStrategy` は、いくつかのオプションも提供しています。例:

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_", // table name prefix, table for `User` would be `t_users`
SingularTable: true, // use singular table name, table for `User` would be `user` with this option enabled
NoLowerCase: true, // skip the snake_casing of names
NameReplacer: strings.NewReplacer("CID", "Cid"), // use name replacer to change struct/field name before convert it to db name
},
})

Logger

このオプションをオーバーライドすることで、GORM のデフォルトのロガーを変更できます。詳細は Logger を参照してください。

NowFunc

新しいタイムスタンプを作成する際に使用する関数を変更します。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NowFunc: func() time.Time {
return time.Now().Local()
},
})

DryRun

SQL を実行せずに生成します。生成された SQL を準備またはテストするために使用できます。詳細は Session を参照してください。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
DryRun: false,
})

PrepareStmt

`PreparedStmt` は、SQL を実行する際にプリペアドステートメントを作成し、キャッシュして将来の呼び出しを高速化します。詳細は Session を参照してください。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
PrepareStmt: false,
})

DisableNestedTransaction

db トランザクション内で `Transaction` メソッドを使用する場合、GORM は `SavePoint(savedPointName)`、`RollbackTo(savedPointName)` を使用してネストされたトランザクションをサポートします。`DisableNestedTransaction` オプションを使用して無効にすることができます。詳細は Session を参照してください。

AllowGlobalUpdate

グローバル更新/削除を有効にします。詳細は Session を参照してください。

DisableAutomaticPing

GORM は、データベースの可用性を確認するために初期化後に自動的にデータベースを ping します。`true` に設定することで無効にできます。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
DisableAutomaticPing: true,
})

DisableForeignKeyConstraintWhenMigrating

GORM は、`AutoMigrate` または `CreateTable` の際にデータベースの外部キー制約を自動的に作成します。`true` に設定することで無効にできます。詳細は Migration を参照してください。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
})

プラチナスポンサー

ゴールドスポンサー

プラチナスポンサー

ゴールドスポンサー