🦁
【Go】sqlBoilerとgormを比較
背景
社内でsqlBoilerを使用しているので、どんな感じか自分で触ってみたかった。今回はdbをpostgresで行います。
環境はこちらを使って行いました。
sqlBoilerとは
sqlboilerとは、goのORMの種類の一つです。あらかじめ用意したdbの内容から自動で型を生成してくれます。この時に型だけではなく、crudも自動で生成してくれます。自動生成するのに設定ファイルも必要なので、準備する必要があります。
sqlBoilerの実装
まずこちらをダウンロードをして環境を立ち上げてください。環境を立ち上げた時にdbは自動生成されるので、今回はdbの初期設定は不要です。自分の環境で行う時には最初にdbを作成しておく必要があります。
dockerfile
WORKDIR /go/api_test
//以下を追加
RUN go install github.com/volatiletech/sqlboiler/v4@latest && \
go install github.com/volatiletech/sqlboiler/v4/drivers/sqlboiler-psql@latest
次にapi_test配下にsqlboiler.tomlを作成し以下の情報を追加してください。
[psql]
blacklist = []
dbname = "db"
host = "postgresql"
pass = "password"
port = 5432
sslmode = "disable"
user = "user"
その次にこちらのコマンドを叩いてください。そうすると、ファイルが自動でmodels_psqlのディレクトリが自動で生成されます。
psqlとは、先ほど作成したsqlboiler.tomlのpsqlの内容です。
--output:自動生成されるファイルをこのディレクトリ配下に作ります。
--pkgname:パッケージネームの設定です。
sqlboiler psql --output models_psql --pkgname models_psql --wipe
追加されたディレクトリ内にあるパッケージをダウンロードするために次のコマンドを叩いてください。
go mod tidy
まとめ
gormとは逆だった。gormはテーブルの構造体を自分で作ってそれをもとにdbを作成するが、sqlboilerはまず、dbにテーブルを準備してそれをもとにテーブルの構造体が自動で生成される。まだ理解が浅いので、もう少し触って改めて、まとめたい。
Discussion