v2.0 - 2020.08
GORM2.0はスクラッチからの書き直しをしているため、互換性のないAPIの変更と多くの改善が導入されています。
- パフォーマンスの改善
- モジュール性の向上
- Contextへの対応、Batch Insertの追加、Prepared State Modeの追加、DryRun Modeの追加、Join Preload機能の追加、Find結果のマップへの変換、マップでのCreate、FindInBatchesのサポート
- トランザクションのネスト、セーブポイント、セーブポイントへのロールバックのサポート
- 名前付き引数、集約条件、Upsert、ロック、Optimizer/Index/Comment Hintsのサポート、サブクエリの改善
- 自己参照の完全なサポート、テーブル結合の改善、大量データでのAssociation Modeの対応
- 複数フィールドでの作成/更新時間をトラッキング、またUNIX(ミリ/ナノ)秒でのトラッキングのサポート
- フィールド権限のサポート:読み取り専用、書き込み専用、作成専用、更新専用、無視するフィールド
- 新しいプラグインシステム:複数データベースへの対応、Database Resolverプラグインでの読み取り/書き込み分離の対応、prometheusとの連携
- 新しいHooksのAPI:プラグインと統合されたインターフェイス
- 新しいマイグレーション処理:リレーション用の外部キーの作成への対応、制約/checkへの対応、強化されたインデックスのサポート
- 新しいLogger:contextへの対応、拡張性の向上
- 統一された命名規約:テーブル名、フィールド名、結合テーブル名、外部キー、Check制約、インデックス名のルール
- 独自のデータ型へのさらなるサポート(例:JSON)
v1.0 - 2016.04
破壊的変更
gorm.Openは*gorm.DB型 ではなくgorm.DB型を返すようになります- 更新は変更されたフィールドのみ反映されるようになります
- 論理削除は
deleted_at IS NULLのチェックのみ行われるようになります - データベース名への変換ロジックの更新: golint にある
HTTPやURIのような省略形の名称は今までも問題なく lowercase に変換されていました。つまりHTTPはh_t_t_pではなくhttpへ変換ができていました。しかし、リストにないその他の省略形の名称はその限りではなく、例えばSKUはs_k_uに変換されてしまっていました。今回の変更でそれがskuとなるようになります。 RecordNotFoundエラー がErrRecordNotFoundに改名されましたmssql固有の設定はgithub.com/jinzhu/gorm/dialects/mssqlに変更されましたHstoreはgithub.com/jinzhu/gorm/dialects/postgresパッケージに移動されました