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機能はないので、goosesql-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


関連記事

laravel logo

LaravelでのCookieファサード利用

1 はじめに2 基本メソッド2.1 付与2.2 取得2.3 削除3 他メソッド3.1 forever3.2 getQueuedCookies3.3 unqueue4 ミドルウェア4.1 AddQueu ...

Pythonで書かれたスクレイピングのコードをRubyで書いてみる

1 はじめに2 仕様3 ソースコード4 使用したモジュール、Gem5 対象ページを取得6 XPATHから目的のものを抜き出す7 次のページのリンクを取得する8 さいごに はじめに 以前、技術評論社さん ...

Go言語

Golangのsyncパッケージによる同期・排他制御

1 はじめに2 sync.WaitGroup3 sync.Mutex4 sync.RWMutex5 sync.Map6 sync.Once7 sync.Pool8 さいごに9 おすすめ書籍 はじめに ...

rails

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

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

laravel logo

LaravelのFacade(ファサード)とは? 何気なく使用していた裏側の仕組みを解説!

1 はじめに1.1 Facadeを使用しているクラス2 Facadeの仕組み3 Facadeの作成3.1 サンプルコードに必要な実装3.2 Serviceの作成3.3 Facadeクラスの作成3.4 ...

フォロー

blog-page_side_responsive

2018年11月
 123
45678910
11121314151617
18192021222324
252627282930  

アプリ情報

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