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に移動されました。