Bun ORMのRelationメソッド仕様
Go
Bun
ORM
基本概念
Relationメソッドは、モデル間の関連性に基づいてデータを取得するための高レベルAPIを提供する。モデル構造体のタグ定義に従って自動的にJOINを生成し、取得したデータをGo構造体に適切にマッピングする。
関連タイプ
rel:has-one
: 1対1の関連rel:has-many
: 1対多の関連rel:belongs-to
: 多対1の関連m2m:中間テーブル名
: 多対多の関連
内部動作
-
単一クエリ方式
- 基本的には1つのSQLクエリでJOINを使用してデータを取得
- 取得したデータを適切なGo構造体にマッピング
-
複数クエリ方式
- 関連が複雑な場合、複数のクエリに分割することがある
- 特に多対多関連やネストが深い場合に使用される
使用上の注意点
- WHERE句でテーブルエイリアスを参照する場合、Relationだけでは不十分
- 明示的なJOINが必要になる場合がある
- テーブルエイリアスはBunが自動生成するため、直接制御が難しい
最適化
- N+1問題を自動的に回避するよう設計されている
- 関連が多すぎる場合は、パフォーマンス最適化のために複数クエリに分割
コード例
Joinメソッドとの併用
複雑なクエリでは、RelationとJoinを併用することで、データマッピングの利便性と細かいクエリ制御の両方を実現できる。