GolangのORM SQLBoilerを使ってみる - セットアップ編
Contents
はじめに
GolangのORMである SQLBoiler を紹介します。
今回はSQLBoilerをセットアップするところまでやってみます。
SQLBoilerとは
DBのスキーマ情報を読み取って、そこからstructやそれらのレシーバを自動生成してくれるORMです。
自動生成の対象にはFK成約やUnique成約を考慮して、one to one や one to manyの関数を自動生成してくる素敵なORMです。
リフレクションなどを使っていないため、他のORMと比較しても動作が早いようです。ベンチマーク結果は 公式サイト を参照ください。
また、エラーや使い方など、何か困ったことがあっても自動生成されたコードを読めば大体わかるのもいいところです。
同じようにスキーマ情報からstructなどを自動生成するORMに XORM があります。
XORMも少し使ったことがあるのですが、生成される対象の関数などはSQLBoilerの方が圧倒的に多く、便利だと感じました。(私見)
使ってみる
インストール
まずはsqlboilerのコマンドをインストールします。
|
|
また使うRDBMS用のライブラリも必要です。
今回のサンプルではPostgreSQLを使います。
|
|
プロジェクト設定する
sqlboilerのコマンドをインストールしたら、次に接続先の設定を行います。
まずはプロジェクトのroot dirに以下のようなtomlファイルを作ります。
|
|
それぞれ名前の通りの設定ですが、2つだけ見慣れないパラメータがあると思います。
SQLBoilerのDBとのコネクションはgolang標準のdatabase/sqlのコネクションを使います。
このコネクションはアプリケーション起動時にdatabase/sqlのコネクションプールを使うことも出来るし、実際にSQLを発行するタイミングで別のコネクションを渡すことも出来ます。
また、SQL実行時に何かしらのエラーが発生した場合、 err
を返す方法とその場で panic
を起こすことが出来ます。
- add-global-variants
- これはグローバルに設定したコネクションを使ってSQLを発行するオプションを自動生成するか、のフラグです
- add-panic-variants
- これはSQLでエラーが発生した場合にpanicを起こすかどうかのオプションを自動生成するか、のフラグです。
- プロダクションコードではSQLエラーで直接panicを起こすことはあまりないかと思いますが、テストコードだとエラーハンドリングせずにpanicさせてしまうことはよくやります。
これらは有用なオプションなので、自動生成の対象に入れています。
対象のDB
次に自動生成しますが、対象のDBを作っておきます。
今回は以下のような簡単なテーブル構成を想定します。
|
|
DDLは以下を使います。
|
|
自動生成する
まずはpostgresにDBとTableを作ります。
|
|
そして、自動生成
|
|
成功していれば何も表示されず、 app/db
のディレクトリが出来ていてその中に生成されたファイルが存在すると思います。
まとめ
とりあえず今回はSQLBoilerのセットアップをして自動生成するところまでやってみました。
次回は生成されたものを使ってSQLを発行してみようと思います。
今回作ったサンプルは以下のリポジトリに入れておきます。
https://github.com/ken-aio/go-sqlboiler-sample
Author ken-aio
LastMod 2019-02-13