BackEnd

Go言語で使えるORMライブラリ

投稿日:

はじめに

以前、Go言語で使えるmigrationライブラリを紹介しました。今回はORMライブラリを紹介します。

ORMライブラリ

Go言語のORMライブラリを2つ紹介します。これらのライブラリを使用することで、DBのデータをstructにマッピングすることができます。それでは、各ライブラリの特徴を簡単に紹介します。

GORM

GORMは「Full-Featured ORM」や「Developer Friendly」を謳う非常に多機能な定番ORMで、これ単体で一通りのことができます。また、ドキュメントも豊富です。
GORMの機能を以下に列挙します。

  • Associations (Has One, Has Many, Belongs To, Many To Many, Polymorphism)
  • Hooks (Before/After Create/Save/Update/Delete/Find)
  • Preloading (eager loading)
  • Transactions
  • Composite Primary Key
  • SQL Builder
  • Auto Migrations
  • Logger
  • Extendable, write Plugins based on GORM callbacks
  • Every feature comes with tests

SQLBoiler

SQLBoilerは非常にパフォーマンスの高いORMのようです。migration機能はないので、goose、 sql-migrateや前回紹介したsqldefなどを併用する必要があります。SQLBoilerの使い方についてはこちらが参考になります。

GORMを使ってみる

それでは、実際にGORMを使ってみます。

導入

下記の通りインストールします。

今回はMySQLを使用しますので、こちらもインストールしておきます。

migration

nameというフィールドを持つUsersというテーブルを定義します。下記のようにgorm.Modelと記述するとcreated_at、updated_at、deleted_atが定義されます。

マイグレーションは下記のように行います。
?parseTime=trueを記述しないと「unsupported Scan, storing driver.Value type []uint8 into type *time.Time」というエラーが発生します。こちらの通りDB側の型とGo言語側の型が違うことで発生するようです。

実際のテーブルは下記のとおりです。

insert

insertは下記のように行います。

select

selectは下記のように行います。

update

updateは下記のように行います。

delete

deleteは下記のように行います。

サンプルコード

CRUD操作のサンプルコードは下記のとおりです。

実行時のログは下記のとおりです。

さいごに

今回はGo言語でのORMライブラリを紹介しました。今回はGORMを使ってみましたが、SQLBoilerも実際に動かしてみたいと思います。

なお、Go言語に関してはこちらでも多くの記事を紹介していますので、ぜひご覧ください。

おすすめ書籍

スターティングGo言語  Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作る impress top gearシリーズ  みんなのGo言語[現場で使える実践テクニック]  Go言語でつくるインタプリタ

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

rails

ShrineでS3に画像をアップロードする

1 はじめに1.1 前提条件1.2 関連記事2 AWS側の準備2.1 S3バケットを作成する2.2 CORSを設定する2.3 アクセス用のユーザを作成する3 Rails側の設定3.1 Initiali ...

軽量なAlpine Linuxイメージでgitbookのローカル環境を構築する

1 はじめに2 Alpine Linuxとは3 Docker本体のインストール4 サンプルリポジトリのダウンロード5 dockerイメージ作成6 Gitbook初期化&実行7 Dockerの ...

rails

Rails Developer Meetup に参加してきました【1日目】

1 はじめに2 発表について2.1 安全かつ高速に進めるマイクロサービス化2.2 Rails in Microservices2.3 MySQL/InnoDB の裏側2.4 H2O/mruby でつく ...

laravel logo

Laravelでテストコードを書くには? Featureテスト/Unitテスト

1 はじめに2 FeatureとUnitの使い分け3 テスト用データベースの準備4 Featureテスト4.1 テスト対象のコード4.2 テストコードの実装4.3 テスト結果の検証4.3.1 ステータ ...

laravel logo

laravel-enumを使ってみたら快適だった

1 はじめに2 enumについて3 環境4 導入5 enumクラス5.1 生成5.2 enumクラス編集5.3 日本語化6 マイグレーション6.1 生成6.2 編集7 プロパティのキャスト8 さいごに ...

フォロー

follow us in feedly

blog-page_side_responsive

東京改造計画(NewsPicks Book)
2018年11月
 123
45678910
11121314151617
18192021222324
252627282930 

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。