Lapis Lazuli

technical blog for web developer

【Go】GoはORMを使わないのが普通

4月になって新職場で仕事を開始して、Goでゴリゴリとコードを書いています。
その中で発見したことが一つあります。

GoはSQL直接書く。

以前、初めてGoで開発していた時には「さすがに標準のdatabaseパッケージでSQL直書きはな・・・」と思い、普通にgormを使っていました。
いわゆるWebフレームワーク標準のORMと同じような書き方書けるので使ったのですが、どうやらこれは主流じゃなかったようで・・・
SQLをソースに直書きするスタイルが普通らしいです。

gormは遅い

処理をパースする必要があるせいかgormは遅いみたい
です。
特に複雑なSQL書くとヤヴァイみたいですね。内部結合でも遅くなりやすいらしいです。
goの速度がスポイルされてしまうので、使われないのはその辺りの理由です。勿論実際のプロダクトで使っているところもありますが、何らかの制限をして使ったりしているようです。

database/sqlは使いにくい

ただ標準パッケージのdatabase/sqlは、カラム毎にScanしたりしないといけないので、イマイチ使い勝手がよくないです。
なのでsqlxのような薄いラッパーを使って効率よく開発しています。

GitHub - jmoiron/sqlx: general purpose extensions to golang's database/sql

ORMどっぷりだったので面倒ですが、これも慣れるまで頑張るしかないかなと思います。
これを期にSQLの苦手意識を少しでも克服しよう・・・