Bob ORM
ℹ️
Bob ORM の公式ドキュメントを日本語に翻訳したものです。
元のドキュメント: https://bob.stephenafamo.com/
GitHub: https://github.com/stephenafamo/bob
License: MIT License
元のドキュメント: https://bob.stephenafamo.com/
GitHub: https://github.com/stephenafamo/bob
License: MIT License
Introduction
Bob は Go 言語で SQL データベースを操作するためのパッケージとツールのセットです。
Bob は以下の点に重点を置いています:
- 正確性: 物事は正しく動作し、可能な限り仕様に忠実に従うべきです
- 利便性: 不可解な魔法や不必要な抽象化なしに、アクションを実行する便利な方法を提供します
- 協調性: 標準ライブラリやその他のツールとうまく連携します
Support
Database | Query Builder | Executor | Models | Code Generation |
---|---|---|---|---|
PostgreSQL | ✓ | ✓ | ✓ | ✓ |
MySQL | ✓ | ✓ | ✓ | ✓ |
SQLite | ✓ | ✓ | ✓ | ✓ |
1. Query Builder
Bob のクエリビルダーは、SQL クエリを構築するための便利で型安全な方法を提供します。
各データベース方言用のクエリビルダーは、その特定の機能と癖をサポートしています。
主要な特徴:
- Raw クエリ:
db.Query()
、db.Exec()
で直接実行するための生の SQL を構築 - 型安全: Go の型システムを活用してコンパイル時にエラーをキャッチ
- 方言固有: 各データベースの特定の機能をサポート
2. SQL Executor
SQL エグゼキューターは、クエリビルダーで構築されたクエリを実行し、結果を Go の構造体にマッピングするツールです。
主要なメソッド:
One()
: 単一の結果を期待All()
: 複数の結果を期待Cursor()
: 大きな結果セットを効率的に処理Exec()
: 結果を返さないクエリ(INSERT、UPDATE、DELETE など)
3. Models
Bob のモデルは、データベースのテーブルやビューを表現するための2つのタイプを提供します:
View モデル
読み取り専用のデータ表現用:
type User struct {
ID int
Name string
Email string
}
Table モデル
読み書き両方の操作用で、部分的な更新をサポート:
type UserSetter struct {
ID omit.Val[int]
Name omit.Val[string]
Email omit.Val[string]
}
4. Code Generation
Bob のコード生成機能は、データベーススキーマから自動的に Go コードを生成します。
Model Generation
データベーススキーマからモデルを生成:
- テーブル用の View と Table モデル
- 型安全な構造体
- 適切なタグ付け
Factory Generator
テストのためのファクトリーを生成:
- テストデータの作成を簡素化
- リレーションシップの自動処理
- カスタマイズ可能なデフォルト値
Generating code for SQL Queries
手書きの SQL クエリから Go コードを生成:
- SQL ファイルから型安全な関数を生成
- パラメータと結果の型を自動推論
- 複雑なクエリの管理を簡素化
Bob は段階的に採用できるように設計されており、必要に応じて各コンポーネントを独立して使用できます。
📚 ドキュメント目次
🔧 Query Builder
- PostgreSQL - PostgreSQL用クエリビルダー(Select、Insert、Update、Delete)
- MySQL - MySQL用クエリビルダー(Select、Insert、Update、Delete)
- SQLite - SQLite用クエリビルダー(Select、Insert、Update、Delete)
🚀 Code Generation
- Configuration - 設定ファイルの詳細説明
- Usage - 基本的な使い方と実行方法
- Queries - SQLクエリからのコード生成
- Relationships - リレーションシップの定義と生成
- Factories - テスト用ファクトリーの生成
🗄️ Models
⚡ SQL Executor
🆚 VS Others
- Bob vs GORM - GORMとの詳細比較
- Bob vs Ent - Entとの詳細比較
- Bob vs SQLBoiler - SQLBoilerとの詳細比較
- Bob vs Jet - Jetとの詳細比較