v2.0 - 2020.08
GORM 2.0はゼロから書き直されたもので、いくつかの非互換なAPI変更と多くの改良が導入されています。
- パフォーマンスの向上
- モジュール化
- コンテキスト、バッチ挿入、プリペアードステートメントモード、DryRunモード、Joinプリロード、Find To Map、Create From Map、FindInBatchesのサポート
- ネストされたトランザクション/セーブポイント/セーブポイントへのロールバックのサポート
- 名前付き引数、グループ条件、Upsert、ロック、オプティマイザ/インデックス/コメントヒントのサポート、サブクエリ改善
- 完全な自己参照関係のサポート、結合テーブルの改善、バッチデータの関連付けモード
- 作成/更新時刻の追跡のための複数フィールドのサポート(UNIX(ミリ/ナノ)秒のサポートを追加)
- フィールド権限のサポート:読み取り専用、書き込み専用、作成専用、更新専用、無視
- 新しいプラグインシステム:複数のデータベース、プラグインDatabase Resolverによる読み書き分割サポート、Prometheus統合…
- 新しいHooks API:プラグインとの統合インターフェース
- 新しいMigrator:リレーションシップのデータベース外部キー、制約/チェッカーサポート、強化されたインデックスサポートの作成を可能にします。
- 新しいLogger:コンテキストサポート、拡張性の向上
- 統一されたネーミング戦略:テーブル名、フィールド名、結合テーブル名、外部キー、チェッカー、インデックス名のルール
- より良いカスタマイズされたデータ型サポート(例:JSON)
v1.0 - 2016.04
破壊的変更
gorm.Open
は*gorm.DB
を返し、gorm.DB
を返さなくなりました。- 更新は変更されたフィールドのみ更新します。
- ソフトデリートは
deleted_at IS NULL
のみをチェックします。 - 新しいToDBNameロジック
golint のようなHTTP
、URI
といった一般的な略語は小文字に変換されました。そのため、HTTP
のデータベース名はhttp
になり、h_t_t_p
とはなりません。しかし、リストにない他の略語(SKU
など)のデータベース名はs_k_u
でしたが、これはsku
に修正されました。 - エラー
RecordNotFound
はErrRecordNotFound
に名前が変更されました。 mssql
ダイアレクトはgithub.com/jinzhu/gorm/dialects/mssql
に名前が変更されました。Hstore
はパッケージgithub.com/jinzhu/gorm/dialects/postgres
に移動されました。